java ファイル操作
現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする
ものを作成しています。
現状のコードはこのような感じです。
class addresskensaku{
public static void main(String[] args)throws IOException{
System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
char res = str.charAt(0);
//1が選択された場合
if(res == '1' || res == '1'){
System.out.println("名前を入力してください。");
BufferedReader fn =
new BufferedReader(new InputStreamReader(System.in));
String str1 = fn.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
System.out.println("検索結果 :");
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//部分一致
if(words[0].indexOf(str1) != -1){
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//2が入力された場合
if(res == '2' || res == '2'){
System.out.println("年齢を入力してください。");
BufferedReader o =
new BufferedReader(new InputStreamReader(System.in));
String ol = o.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp =null;
//検索
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//完全一致
if (ol.equals(words[1])){
// System.out.println("検索結果:");
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//3が入力された場合
if(res == '3' || res == '3'){
System.out.println("出身地を入力してください。");
BufferedReader p =
new BufferedReader(new InputStreamReader(System.in));
String pref = p.readLine();
try{
FileReader freader = new FileReader("addressdata.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp = null;
//検索
while((tmp=breader.readLine())!=null){
String[] words = tmp.split(",");
//部分一致
if(words[2].indexOf(pref) != -1){
System.out.println(tmp);
}
}
breader.close();
}catch(IOException e){
System.out.println("e");
}
}
//4が入力された場合 追加
if(res == '4' || res == '4'){
//氏名入力
System.out.println("氏名を入力してください。");
BufferedReader n =
new BufferedReader(new InputStreamReader(System.in));
String str2 = n.readLine();
//年齢入力
System.out.println("年齢を入力してください。");
BufferedReader o =
new BufferedReader(new InputStreamReader(System.in));
String str3 = o.readLine();
//住所入力
System.out.println("住所を入力してください。");
BufferedReader a =
new BufferedReader(new InputStreamReader(System.in));
String str4 = a.readLine();
//ファイルに書き込み
try{
File file = new File("addressdata.txt");
FileWriter filewriter = new FileWriter(file, true);
filewriter.write(str2+","+str3+","+str4+"\r\n");
filewriter.close();
}catch(IOException e){
System.out.println("e");
}
}
}
}
これをカプセル化し
各機能ごとにメソッドを分けて作ろうかなと思っています。
結果の出力はmainでやる予定です。
補足
続けざまの質問で大変申し訳ないのですが、このCinクラスについて 入出力エラーの場合は,readLineメソッドが投げる例外IOExceptionをキャッチせず,getLineを呼び出したメソッドにそのまま投げ,入力の終わりに到達した場合には,nullを返すのではなく例外を投げるようにするとしたらどのように変えればいいのかがわかるのでしたら、ぜひ教えてもらえないでしょうか?お願いします。