Java文件读取错误

时间:2014-08-14 17:34:05

标签: java

所以有代码:

public class Main{
  public static void main(String[] argv) throws IOException{
    new Main().run();
  }
  PrintWriter pw;
  Scanner sc;
  public void run() throws IOException{
    sc = new Scanner(new File("input.txt"));
    int a=sc.nextInt();
    pw = new PrintWriter(new File("output.txt"));
    pw.print(a*a);
    pw.close();
  }
}

错误:

Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at Main.run(Main.java:14)
    at Main.main(Main.java:8)

就像我明白它找不到名为input.txt的文件,但是!我在Main类所在的同一目录中有该文件,那么什么可以是promblem呢? p.尝试cmd和eclipse时,都会出现同样的错误。

3 个答案:

答案 0 :(得分:4)

它与您的Main类无关,它与启动此Java程序的位置(即当前工作目录)相关

相对于

System.getProperty("user.dir")

答案 1 :(得分:0)

默认情况下,您可以使用System.out.println(System.getProperty("user.dir"))查看Java在哪里查找文件。这很可能是您的项目文件夹。如果您不想指定绝对路径,则必须放置文件。

答案 2 :(得分:0)

您可能需要为文件指定PATH,您可以做的一件事是使用File.canRead()测试存在性和可读性

File file = new File("input.txt");
if (!file.canRead()) {
    System.err.println(file.getCanonicalPath() + ": cannot be read");
    return;   
}

使用PATH的示例可能是(对于Windows) -

File file = new File("c:/mydir/input.txt");