1.やりたいこと
標準入力した値を、HashMapを使ってkeyとvalueを設定
(0001,employerと打てば、数が社員番号・employerが社員の名前として登録される)
設定したkeyと値をテキストファイルに書き込む
その後、ファイルを読み込み、内容を表示させたい。
2.現状
mapの登録まではできている。
ファイルへの書き込みを行うコードも書いたが、読取りが出来ていないので正常に書きこめているのかを確かめられていない。
ーーーーー以下コードーーーーー
Java
1package Java_IO; 2 3import java.io.BufferedWriter; 4import java.io.FileOutputStream; 5import java.io.FileWriter; 6import java.io.IOException; 7import java.io.ObjectOutputStream; 8import java.io.PrintWriter; 9import java.util.LinkedHashMap; 10import java.util.Map; 11import java.util.Scanner; 12 13public class IO_Task_4 { 14 public static void main(String[] args) throws IOException{; 15 // FileWriterクラスのオブジェクトを生成する 16 FileWriter file = new FileWriter("Task_4.txt"); 17 // PrintWriterクラスのオブジェクトを生成する 18 PrintWriter pw = new PrintWriter(new BufferedWriter(file)); 19 20 //入力フォーム 21 System.out.println("文字を入力して下さい"); 22 Scanner scan = new Scanner(System.in); 23 24 //Map型の変数に代入する 25 Map<String , String> map = new LinkedHashMap<String , String>(); 26 27 while(true){ 28 String str = scan.nextLine(); 29 String[] array = new String[2]; 30 31 //printかどうかチェック 32 if(!str.equals("print")){ 33 if(!str.equals("end")){ 34 //map.getでkeyと値が存在するのか確認 35 //mapでもprintでもなければ、入力された文字を,で分けて、番号と名前に分ける 36 array = str.split(","); 37 String num = array[0]; 38 String name = array[1]; 39 if(map.get(num) == null){ 40 //番号が登録済みでなければ、mapに追加 41 map.put(num , name); 42 //ファイルに書きこむ 43 try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Task_4.txt"))) { 44 oos.writeObject(map); 45 }catch(IOException e){ 46 e.printStackTrace(); 47 } 48 System.out.println("追加しました"); 49 }else{ 50 //すでに入力済みの場合 51 System.out.println(num + "はすでに入力されています"); 52 } 53 }else{ 54 //入力がendだった場合のシステム終了 55 System.out.println("システム終了"); 56 scan.close(); 57 break; 58 } 59 60 }else{ 61 //入力がprintだった場合の一覧表示 62 System.out.println("---Mapの要素一覧---"); 63 for(String key : map.keySet()){ 64 String value = map.get(key); 65 System.out.println(key + ":" + value); 66 } 67 System.out.println("------------"); 68 scan.close(); 69 break; 70 } 71 ; 72 73 } 74 pw.close(); 75 76 } 77 78
3.今考えている読み込みコード
以下のコードで読みこもうとしているのですが、結果正しくは表示されません。
表示されたものは、
仮表示 loadFactorI
です。
Java
1 2package Java_IO; 3 4 5import java.io.BufferedReader; 6import java.io.File; 7import java.io.FileReader; 8import java.io.IOException; 9 10public class IO_Task_5 { 11 public static void main(String[] args) throws IOException{ 12 13 FileReader reader = null; 14 15 try{ 16 File file = new File("Task_4.txt"); 17 BufferedReader br = new BufferedReader(new FileReader(file)); 18 19 System.out.println("仮表示"); 20 String buffer = br.readLine(); 21 buffer = br.readLine(); 22 23 while(buffer != null){ 24 System.out.println(buffer); 25 buffer = br.readLine(); 26 } 27 br.close(); 28 }catch(IOException e){ 29 e.printStackTrace(); 30 }finally{ 31 if(reader != null){ 32 try{ 33 reader.close(); 34 }catch(IOException e){ 35 e.printStackTrace(); 36 } 37 } 38 } 39 40 } 41} 42
様々なサイトをみながら作ってはいるのですが、イマイチ腑に落ちません。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー