2013-04-21 17 views
7

ファイルにデータを書き込むメソッドがあります。今私は、ファイルからこのデータを読み取ることができますどのようにJava - PrintWriter、BufferedWriter、FileWriterを使用してファイルを読み込む方法

public void writeToFile(String FileName){ 
    PrintWriter pw = null; 
    try { 
     pw = new PrintWriter(new BufferedWriter(new FileWriter(FileName))); 
     for(Cars car : list){ 
      pw.println(car.getType()); 
      pw.println(car.getMaxSpeed()); 
      pw.println(car.getOwner()); 
      pw.println(); 
      pw.flush(); 
     } 
     pw.close(); 
    } 
    catch(IOException ex){ 
     System.err.println(ex); 
    } 
} 

以下のように私はPrintWriterBufferedWriterFileWriterでしょうか?私はこの方法が間違っている何

public void readFromFile() throws IOException { 
     InputStreamReader fr = null; 
     try { 
      fr = new InputStreamReader(new BufferedReader(new FileInputStream(new FileReader("c:\\cars.txt")))); 
      System.out.println(fr.read()); 
     } catch (Exception ex) { 
      System.out.println(ex.getMessage()); 
     } finally { 
      fr.close(); 
     } 
    } 

InputStreamReaderBufferedReaderFileInputStreamを使用しようとしましたが、私のNetBeansは私にエラーメッセージが表示さ

答えて

14
BufferedReader in = new BufferedReader(new FileReader("file.in")); 
FileWriter fstream = new FileWriter("file.out"); 
BufferedWriter out = new BufferedWriter(fstream); 

String line = in.readLine(); // <-- read whole line 
StringTokenizer tk = new StringTokenizer(line); 
int a = Integer.parseInt(tk.nextToken()); // <-- read single word on line and parse to int 

out.write(""+a); 
out.flush(); 
2

あなたのコード内のいくつかの問題があります

1)にInputStreamReaderは、引数ではないリーダーとしてInputStreamを取ります。 http://docs.oracle.com/javase/6/docs/api/java/io/InputStreamReader.htmlを参照してください。

2)FileInputStreamはReaderの引数も受け付けません(File、FileDescriptor、またはStringをとります)。参照:http://docs.oracle.com/javase/6/docs/api/java/io/FileInputStream.html

3)BufferedReaderは、ファイルを1行ずつ正常に読み取ります。 read()メソッドは、単一の文字だけを読み込みます。

可能な解決策は次のようになります。ところで

fr = new BufferedReader(new InputStreamReader(new FileInputStream(new File("c:\\cars.txt")))); 
String line = ""; 
while((line = fr.readLine()) != null) { 
    System.out.println(line); 
} 

:他の人があなたを助けるためにのためにあなたが正確なエラー・メッセージまたはより良いスタックトレース提供する場合には、容易になるだろう。

+0

はどうもありがとうございました。今それは完璧に動作します:) – marek

0

単純なエラー:コンストラクタ 'FileInputStream(java.io.FileReader)'を解決できません。、必須コンストラクタがAPIに存在しません。 、

new PrintWriter(new BufferedWriter(new FileWriter(FileName))); 

はそう読んでくれは

new PrintReader(new BufferedReader(new FileReader(FileName))); 

を必要とするが、PrintReaderは(存在しない)必要とされていないので、あなたが必要なのは次のとおりです:

あなたは、元のコードはでした

new BufferedReader(new FileReader(FileName)) 

PrinterWriterは、オブジェクトの書式設定された表現をテキスト出力ストリームに出力しますが、テキストを読むときは常にformattしたがって、PrinterReaderは存在しません。

あなたは:)またラインで、例ので、読んで行を行ずつ書いている:

public void readFromFile() throws IOException { 
    BufferedReader bufferedReader = null; 
    try { 
     String sCurrentLine; 
     bufferedReader = new BufferedReader(new FileReader("c:\\cars.txt")); 
     while ((sCurrentLine = bufferedReader.readLine()) != null) { 
      System.out.println(sCurrentLine); 
     } 
    } catch (Exception ex) { 
     System.out.println(ex.getMessage()); 
    } finally { 
     bufferedReader.close(); 
    } 
} 

以上(JDK7)

void readFromFile() throws IOException { 
    Path path = Paths.get("c:\\cars.txt"); 
    try (BufferedReader reader = Files.newBufferedReader(path, Charset.defaultCharset())){ 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      System.out.println(line); 
     } 

    } 
} 
関連する問題