CSVファイルフォーマットについて
CSVとはComma Separated Values の頭文字を取ったファイルフォーマットです。
テキストファイルの中に、1行1レコードでカンマを列区切りにしたものです。
ヘッダがある場合と無い場合があります。
拡張子は.csv
が主に用いられます。
data.csv(ヘッダ付きの例)
支店名,TEL
本店,000-000-0001
東京支店,000-000-0000
神奈川支店,000-000-0002
似たようなものにタブ区切りテキストファイルもあります。
決まった拡張子は特になく.txt
が用いられる様です。
コーディングについて
自分でコーディングする前や、人にプログラムを教えるときに、
私はよくコメントで処理の流れを記載してそれにコードを追記していく方法を用います。
同様のことを下記に記載してみます。
処理の流れとして下記、A・Bの2パターンが考えられますが、今回はパターンAでの記載です。
パターンA:
1. ユーザー入力取得
2.CSVファイルデータ取得&比較
パターンB:
1.CSVファイルデータ取得(変数等にプール)
2.ユーザー入力取得
3.比較
lang
1/* 処理開始 javaではmain()から */
2
3 /* ユーザーからの入力を受け取り */
4
5 /* ファイルからデータ取得 */
6 /* ファイルオープン */
7 /* 繰り返し(ファイルの行データがある分だけ) */
8 /* 一行読込 */
9 /* 行内に入力した文字と同じ文字列があるか確認 */
10 /* 同じ文字列がある場合 */
11 /* 見つけた行のデータを表示 */
12 /* ループを途中脱出 */
13
14 /* 無い場合 */
15 /* 処理なし? */
16 /* 繰り返し終了 */
17
これに処理を追加したイメージで質問者様のコードを挿入すると以下のようになります。
lang
1import java.io.BufferedReader;
2import java.io.FileReader;
3import java.io.IOException;
4import java.io.InputStreamReader;
5
6class Uriage {
7 /* 処理開始 javaではmain()から */
8 public static void main( String[] args ) {
9
10 /* ユーザーからの入力を受け取り */
11 try {
12 System.out.println("支店名を入力してください");
13 //System.out.println("氏名を入力してください");
14
15 /* 標準入力受け取り */
16 BufferedReader b =
17 new BufferedReader(new InputStreamReader(System.in));
18 /* 繰り返し(ユーザーの入力が行われるまで無限ループで待機) */
19 String siten;
20 while( (siten = b.readLine()) != null ) {
21 } /* 繰り返し終了 */
22 } catch (Exception e) {
23 /* 何か入力時にエラーがある場合の例外処理 */
24 return;
25 } finally {
26 /* 入力ストリームをクローズ
27 クローズを忘れるとストリームを持ちっぱなしになってしまう */
28 b.close();
29 }
30
31 /* ファイルからデータ取得 */
32 try {
33 /* ファイルオープン */
34 BufferedReader br
35 = new BufferedReader( new FileReader("c:\\date.csv") );
36 /* 繰り返し(ファイルの行データがある分だけ) */
37 String date;
38 // ファイルを行単位で読む /* 一行読込 */
39 while( (date = br.readLine()) != null ) {
40 // カンマで分割したString配列を得る
41 String columns[] = date.split( "," ); // 標準入力の受け取り用変数と同じ名前なので名称変更
42 //String siten[] = date.split( "," );
43
44 /* 行内に入力した文字と同じ文字列があるか確認 */
45 if (columns[0].contains(siten)) {
46 /* 同じ文字列がある場合 */
47 /* 見つけた行のデータを表示 */
48 System.out.println(data); /* ファイルから読み取った1行がそのまま表示されます。 */
49 //System.out.println(br); /* br はストリームのため、標準出力できません */
50 /* ループを途中脱出 */
51 } else {
52 /* 無い場合 */
53 /* 処理なし? */
54 }
55 } /* 繰り返し終了 */
56 } catch( IOException e ) {
57 System.out.println( "入出力エラーがありました" );
58 } catch( NumberFormatException e ) {
59 System.out.println( "フォーマットエラーがありました" );
60 } finally {
61 /* ファイルストリームクローズ */
62 br.close();
63 }
64
65 return;
66 }
67}
ユーザー入力部とファイル読み取り部で例外を分けました。
以上、参考になりますでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/18 13:06
2015/10/19 07:42 編集