所以这是我的程序,它工作正常:
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Locale;
public class ScanSum {
public static void main(String[] args) throws IOException {
Scanner s = null;
double sum = 0;
try {
s = new Scanner(new BufferedReader(new FileReader("D:/java-projects/HelloWorld/bin/usnumbers.txt")));
s.useLocale(Locale.US);
while (s.hasNext()) {
if (s.hasNextDouble()) {
sum += s.nextDouble();
} else {
s.next();
}
}
} finally {
s.close();
}
System.out.println(sum);
}
}
如您所见,我使用的是我正在读取的文件的绝对路径:
s = new Scanner(new BufferedReader(new FileReader("D:/java-projects/HelloWorld/bin/usnumbers.txt")));
当我尝试使用相对路径时出现问题:
s = new Scanner(new BufferedReader(new FileReader("usnumbers.txt")));
我得到一个错误:
Exception in thread "main" java.lang.NullPointerException
at ScanSum.main(ScanSum.java:24)
文件 usnumbers.txt 与 ScanSum.class 文件位于同一目录中:
D:/java-projects/HelloWorld/bin/ScanSum.class
D:/java-projects/HelloWorld/bin/usnumbers.txt
我该如何解决这个问题?
原文由 Richard Knop 发布,翻译遵循 CC BY-SA 4.0 许可协议
类文件从哪个目录执行? (这将是当前工作目录和相对路径的基本目录。)
如果您只是从 eclipse 启动应用程序,项目目录将是工作目录,在这种情况下您应该使用
"bin/usnumbers.txt"
。