如何解决java.nio.file.NoSuchFileException?

Snk*_*ini 3 java file

我有一个名为“ result.csv”的文件,我想从该文件中读取某些数据并显示它们。我在eclipse项目文件夹中有该文件。我仍然无法读取文件。

 public static void main(String [] args) {
    int i=0;
    String filename="result.csv";
    Path pathToFile = Paths.get(filename);

    try (BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.US_ASCII)) { 
        // read the first line from the text file 
        String line = br.readLine(); 
        // loop until all lines are read 
        while (i<10) { 
            // use string.split to load a string array with the values from 
            // each line of 
            // the file, using a comma as the delimiter
            String[] attributes = line.split(","); 
            double x=Double.parseDouble(attributes[8]);
            double y=Double.parseDouble(attributes[9]);
            System.out.println(GeoHash.withCharacterPrecision(x, y, 10));


            // read next line before looping 
            // if end of file reached, line would be null 
            line = br.readLine(); 
            i++;
        } 
    } catch (IOException ioe) { 
            ioe.printStackTrace(); 
    } 
}
Run Code Online (Sandbox Code Playgroud)

输出:

java.nio.file.NoSuchFileException: result.csv
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.Files.newByteChannel(Unknown Source)
at java.nio.file.spi.FileSystemProvider.newInputStream(Unknown Source)
at java.nio.file.Files.newInputStream(Unknown Source)
at java.nio.file.Files.newBufferedReader(Unknown Source)
at com.uvce.cse.searchiot.geohash.TestGeoHash.main(TestGeoHash.java:19)
Run Code Online (Sandbox Code Playgroud)

谁能指出我到底想念的地方?以及如何克服此方法或该方法的任何替代方法?

Dod*_*ion 6

问题在于,应用程序启动时的默认目录与您认为的不一样。创建路径后,尝试将以下行添加到代码中:

public static void main(String [] args) {
    int i=0;
    String filename="result.csv";
    Path pathToFile = Paths.get(filename);
    System.out.println(pathToFile.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)

这样,您将确切看到它在哪里寻找文件。

如何解决它是您的决定。您可以使用完整路径规范,而不仅仅是文件名,或者将文件名放在特殊的“资源”目录中,并使用相对路径进行引用,或者将文件移动到默认目录所在的位置。

  • 谢谢,绝对路径确实帮助我找到了它在系统中的位置。 (4认同)

小智 5

如果您file("result.csv")在 src 目录中,则应使用"src/result.csv"而不是"result.csv"