3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

javaファイル操作

Posted at

現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする
ものを作成しています。
現状のコードはこのような感じです。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

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でやる予定です。

アドバイスくださいよろしくおねがいします。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?