-1

我正在运行一个需要读取文本文件并将其保存为字符串的 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”和其他变体也无济于事。

4

2 回答 2

0

只需使用(没有开始斜线):

try {
  string = readFile("assets/test.txt",Charset.defaultCharset());
} catch (IOException e) {
  e.printStackTrace();
}

获取相对于项目根目录的路径。

于 2014-08-24T00:48:55.850 回答
0

如果您从 Eclipse 中执行 Java 程序,典型的运行配置会将项目的基本目录作为 Java 进程的当前工作目录。因此,您需要使用基于该目录(assets/test.txtsrc/main/assets/test.txt或类似目录)的相对路径。您也可以使用完整路径(例如:)/somewhere/workspace/project/assets/test.txt

You can always use System.out.println("CWD=" + new File(".").getAbsolutePath()); to query the directory the Java runtime thinks it is started in.

于 2014-08-24T00:50:57.437 回答