关于BufferedReader的一些问题

时间:2013-03-15 02:10:18

标签: constructor bufferedreader filereader

 import java.io.*;

public class BufferedReaders {

  public static void main(String args[]) {
    try {
      BufferedWriter bw = new BufferedWriter(new FileWriter("e:/test/exercise/BufferedWriter.txt"));
      java.io.BufferedReader bd = new BufferedReader(new FileReader("e:/test/exercise/BufferedWriter.txt"));    // The constructor BufferedReader(FileReader) is undefined.***Why?Thanks for your answers!!!***
      String s = null;
      for (int i = 0; i < 10; i++) {
        s = String.valueOf(Math.random());
        bw.write(s);
        bw.newLine();
      }
      bw.flush();
      while ((s = bd.readLine()) != null) {
        System.out.print(s);
      }
      bw.close();
      bd.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }                          
}

构造函数BufferedReader(FileReader)未定义。但我只是在我的书中找到了代码并进行了测试,我不知道为什么。谢谢回答!

2 个答案:

答案 0 :(得分:0)

不,那段代码很好。 BufferedReader需要Reader,其中FileReader是一个 - 它来自InputStreamReader,来自Reader

我将该代码输入Eclipse并运行良好:

java.io.FileNotFoundException: e:/test/exercise/BufferedWriter.txt (No such file or directory)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:99)
    at java.io.FileWriter.<init>(FileWriter.java:63)
    at Test.main(Test.java:6)

好吧,除了它无法打开文件的事实(特别是因为我的Debian盒子上没有e:驱动器),但这不是语法错误。

所以你有一个不同的问题。如果那不是整个代码,那么你可能有另一个BufferedReader类型干扰Java(但不太可能或者是邪恶的) - 你可以在new之后使用完全限定类型来测试它。好:

java.io.BufferedReader bd = new java.io.BufferedReader ...

答案 1 :(得分:0)

我将您的代码复制到Eclipse中并编写一些import语句,并且它可以正常工作。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedReaders {    
public static void main(String args[]) {
    try {
      BufferedWriter bw = new BufferedWriter(new FileWriter("e:/test/exercise/BufferedWriter.txt"));
      java.io.BufferedReader bd = new BufferedReader(new FileReader("e:/test/exercise/BufferedWriter.txt"));  
      String s = null;
      for (int i = 0; i < 10; i++) {
        s = String.valueOf(Math.random());
        bw.write(s);
        bw.newLine();
      }
      bw.flush();
      while ((s = bd.readLine()) != null) {
        System.out.print(s);
      }
      bw.close();
      bd.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
 }                          
}