import java.io.*;public class TestFileReader
{
public static void main(String[] args) 
{
try
{
BufferedReader b = new BufferedReader(new FileReader("ByteArrayStream.java"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
请大家看看哪里出错了,“ByteArrayStream.java”这个文件确实存在

解决方案 »

  1.   


    new BufferedReader(new FileReader("c:/my/ByteArrayStream.java"));
    路径要写绝对路径,不然就找不到的,你看看你的绝对路径是什么,按照上面的格式来写就行不要用c:\\my\\ByteArrayStream.java这样的格式,因为在Windows里面是这样,但是其他操作系统就不是这样的了
      

  2.   

    路径问题,分隔符可以用system.getProperties("file.separator"),这样跨系统是就不会出现路径问题了~~
      

  3.   

    不是路径问题,如果这个文件的路径和程序的路径一样的话是可以这样写的!他出错的问题是包装流和字节流的问题,也就是说FileReader不能用文件名作为构造的参数,必须是一个File对象。如果写成这样:import java.io.File;
    import java.io.FileReader;public class TestFileReader {
    public static void main(String[] args) throws Exception {
    File f = new File("1.txt");
    FileReader fr = new FileReader(f);
    char[] cbuf = new char[1024];
    String temp = "";
    while(true){
    int i = fr.read(cbuf);
    if(i==-1){
    break;
    }
    temp = temp + new String(cbuf,0,i);
    }
    System.out.println(temp); }}
    那就没问题了!
      

  4.   

    自己看api
    FileReader(String fileName) 
              在给定从中读取数据的文件名的情况下创建一个新 FileReader。FileReader是可以用文件名作为构造的参数的!!!!
      

  5.   

    哎 FileReader 作为字符流类 他们其实是可以看成是一种包装流类 
    它们包装一更加底层的字节流 毕竟硬件都是字节流的而非字符流 
    所以实例化FileReader 是需要一个较为底层的流来实例 就像File 或者FileInputStream 
      

  6.   

    构造方法详细信息 
    FileReader
    public FileReader(String fileName)
               throws FileNotFoundException在给定从中读取数据的文件名的情况下创建一个新 FileReader。 参数:
    fileName - 要从中读取数据的文件的名称 
    抛出: 
    FileNotFoundException - 如果指定文件不存在,或者它是一个目录,而不是一个常规文件,抑或因为其他某些原因而无法打开进行读取。
    楼主可查下JDK文档 有这个构造方法