java.io.IOException: No such file or directory
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:194)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:411)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:453)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:183)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at com.huawei.customsms.hljdx.service.DZZDTask.sendSM(DZZDTask.java:59)
at com.huawei.customsms.hljdx.service.Test.main(Test.java:30)是不是说没有这个文件或目录啊? 但是我new File(path);后 exists()返回true啊,而且前面实现了复制. 但是在读readLine()时报出这个错误,啥意思呢?怎么解决?

解决方案 »

  1.   

    具体代码
     可能你操作的file是一个目录
    需要判断下if(file.exists()&& file.isFile())
      

  2.   

    感谢两位关注,问题已找出来,不过有些疑点
    上面说的在readLine()时抛出异常了,经过分析是因为在此之前已有过一次readLine(),在我将前面的readLine()注释掉后就没问题了之后做了些测试,发现是不是将文件以流的形式读到内存中后,只能read 一次 ? 短时间内都不能多次读取吗? 要是我想读(read)两次话就必须实例化两次流对象吗 ?
      

  3.   

    at com.huawei.customsms.hljdx.service.DZZDTask.sendSM(DZZDTask.java:59) 
    at com.huawei.customsms.hljdx.service.Test.main(Test.java:30) 这两个类是你自己写的吗?查看一下对应的错误行?
      

  4.   

    代码现在已经改完了,但跟下面情况一样的:
    String temp = null;
    while((temp = in.readLine()) ! = null) {
        String temp = in.readLing();
        System.out.println(temp); //这里有打印信息
    }  
    //上面已经读了一次了,流也没关
    String _temp = null;
    while((_temp = in.readLine()) != null) {
        System.out.println(_temp);  //这里就没有了
    }
      

  5.   

    new File(path)并没有实际的写文件在磁盘上,所以会报错。exists()返回true 只是说明在内存中有改文件的抽象。
    写文件需要加上:File temp = new File("path");
    //当这个路径的文件不存在,将在磁盘上新建改文件
    if(!temp.exists()){
    temp.mkdirs();
    }