所以有代码:
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时,都会出现同样的错误。
答案 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");