读取文件时出现FileNotFoundException

时间:2011-07-31 09:06:18

标签: java

执行程序时,我收到FileNotFoundException

java.io.FileNotFoundException: Shyam\src\sam\examles\TextFile.txt (The system cannot find the path specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at sam.examples.ReadingFile.main(ReadingFile.java:9)

下面是我的java程序ReadingFile.java

package sam.examples;

import java.io.*;

public class ReadingFile {
    public static void main(String[] args) {

        try {
            FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt");
            DataInputStream dis = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(dis));

            String str;

            while ((str = br.readLine()) != null) {
                System.err.println(str);
            }

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

该文件与我的java程序所在的路径相同,如下所示

Shyam
  |- src
       |-sam.examples
           |-ReadingFile.java
           |-TextFile.txt

请帮助我们解决这个问题

5 个答案:

答案 0 :(得分:2)

您可能需要转义文件路径中的反斜杠。你已经完成了第一个而不是其他的。

FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\\flower\\workspace\\Shyam\\src\\sam\\examples\\TextFile.txt");

答案 1 :(得分:2)

您的例外情况表明您指定的路径不同。使用整个绝对路径(如您在代码中所示,但可能没有执行),或使用类路径资源。

  • 对于绝对路径方法,您需要使上面的代码编译(现在不是)。逃脱所有斜线(如马丁所示)或使用正斜杠(如巴特建议的那样)。但是使用绝对路径很少是一个好主意
  • 在类路径上有.txt文件。也就是说,.class文件的位置(不仅是.java文件所在的位置)并使用getClass().getResourceAsStream("Text.txt")。这将查找当前类所在的包中的文件。您还可以使用类路径绝对路径,例如.getResourceAsStream("/sam/examples/TextFile.txt")

答案 2 :(得分:1)

调试提示:

重构这一行:

FileInputStream fstream = new FileInputStream("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt");

File file = new File("C:\\Documents and Settings\flower\workspace\Shyam\src\sam\examples\TextFile.txt");
System.out.println(file.getAbsolutePath());
FileInputStream fstream = new FileInputStream(file);

然后看看输出是否真的是那个文件。

答案 3 :(得分:0)

您永远不需要在Java中的文件名中使用反斜杠。将它们全部更改为正斜杠并摆脱双重斜杠。

答案 4 :(得分:0)

尝试这些..

FileInputStream fstream = new FileInputStream(新文件(&#34; C:\ Documents and Settings \ flower \ workspace \ Shyam \ src \ sam \ examples \ TextFile.txt&#34;));

FileReader fstream = new FileReader(new File(&#34; C:\ Documents and Settings \ flower \ workspace \ Shyam \ src \ sam \ examples \ TextFile.txt&#34;));

BufferedReader in = new BufferedReader(fstream);