2016-10-09 15 views
0

私は私の講義材料を理解するいくつかの問題を抱えているし、多分ここで誰かが私には少し良く理解ファイル入力出力

それを理解するのに役立ちますと思っやあ、これはまた、私が講義

private void readFileExample (String inFilename){ 
    FileInputStream fileStrm = null; 
    InputStreamReader rdr; 
    BufferedReader bufRdr; 
    int lineNum; 
    String line; 
    try { 
     fileStrm = new FileInputStream(inFilename); 
     rdr = new InputStreamReader(fileStrm); 
     bufRdr = new BufferedReader(rdr); 

     lineNum = 0; 
     line = bufRdr.readLine(); 
     while (line != null) { 
      lineNum++; 
      processLine(line); 
      line = bufRdr.readLine(); 
     } 
     fileStrm.close(); 
    } 
    catch (IOException e) { 
     if (fileStrm != null) { 
      try { fileStrm.close(); } catch (IOException ex2) { } 
     } 
     System.out.println("Error in file processing: " + e.getMessage()); 
    } 
} 

で持っている例であるI CSVファイル私はcsvファイルを区切るためにreadFileExampleにprocessLineメソッドを使用している推測

private void processLine(String csvRow) { 
    String thisToken = null; 
    StringTokenizer strTok; 
    strTok = new StringTokenizer(csvRow, ","); 

    while (strTok.hasMoreTokens()) { 

     thisToken = strTok.nextToken(); 
     System.out.print(thisToken + " "); 

    } 
    System.out.println(""); 
} 

ことが正しいと

を解析する上でスライドを持っていますか?

とも私の理解が正しければ、イムはどこかで入力するファイル名を仮定し、readFileExampleにそれを呼び出すが、どのように私は

Scanner sc = new scanner (system.in) 
filename = sc.nextline() 

とそのあまりない簡単な場合に使用できることを行うだろう例は素晴らしいでしょう

おかげで助けてください。

+0

[StringTokenizer'のドキュメント](https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html) - "_'StringTokenizer'は、互換性のために保持されますが、その使用は新しいコードではお勧めしません」。 ** Oracle自身が**あなたにそれを使用しないよう指示する場合。しないでください。ファイル自体のために –

答えて

0

ファイル名の入力方法は関係ありません。

これは次のようになります。String fileName = new String( "myFileName");

またはあなたが持っている方法:

スキャナSC =新しいスキャナ(system.in)。

filename = sc.nextline();ファイル名を設定した後

その後、readFileExampleに渡し:

readFileExample(ファイル名); //あなたから名前を取得何であれ、それを渡します。

そしてprocessLine関数は、名前と同じように、各行を解析するためのものです。このプログラムを使用して、ある種のファイル解析を実装したい場合。上記の構造を使用してください。 processLine関数を変更する必要があります。

+0

私はファイルの場所を含める必要がありますか私はちょうどそれをjavaファイルと同じディレクトリに置くことができますか? @Evingle –

+0

FileInputStream(String name) ファイルシステム内のパス名で指定された実際のファイルへの接続を開くことによって、FileInputStreamを作成します。 https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html。上記の2つの方法は、どちらもうまくいくはずです。 – Evingle