我正在运行一个java应用程序,需要读取文本文件并将其保存为字符串,但我一直得到一个NoSuchFileException
。文本文件位于src旁边名为assets的文件夹中。
static String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}
这个方法读取我在这里找到的文件。
try {
string = readFile("test.txt",Charset.defaultCharset());
} catch (IOException e) {
e.printStackTrace();
}
我试过"/assets/test.txt"和其他的变体也无济于事。
如果从Eclipse中执行Java程序,典型的运行配置将把项目的基本目录作为Java进程的当前工作目录。因此,您需要使用基于该目录的相对路径(assets/test.txt
或src/main/assets/test.txt
或类似)。您也可以使用完整路径(例如:/somewhere/workspace/project/assets/test.txt
)。
您总是可以使用System.out.println("CWD=" + new File(".").getAbsolutePath());
来查询Java运行时认为它是从哪个目录启动的
直接使用(不带斜杠):
try {
string = readFile("assets/test.txt",Charset.defaultCharset());
} catch (IOException e) {
e.printStackTrace();
}
获取相对于项目根的路径。