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

rfbsl7qr  于 2023-01-01  发布在  Java
关注(0)|答案(6)|浏览(2760)

我有一个名为"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(); 
    } 
}
    • 输出:**
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)

有没有人能指出我到底漏掉了什么?我怎样才能克服这个或这个方法的任何替代方法?

n3h0vuf2

n3h0vuf21#

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

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

这样,您就可以确切地看到它在哪里查找文件。
你可以使用完整的路径规范来代替文件名,或者把文件名放在一个特殊的“资源”目录下,然后用相对路径引用它,或者把文件移到你默认的目录下。

4si2a6ki

4si2a6ki2#

如果file("result.csv")位于src目录中,则应使用**“src/result.csv”而不是“result.csv”**。

ux6nzvsh

ux6nzvsh3#

这里的问题是java无法在项目文件夹中找到“result.csv”文件,因此,尝试使用文件的完全限定路径,例如在Path变量中使用C:\your_folder\project\result.csv。另外,我认为最好像这样使用bufferedreader:BufferedReader br = new BufferedReader(new FileReader(insert here the String in which is defined the path to the file));检查BufferedReader的使用情况here

vuktfyat

vuktfyat4#

如果您是MacOSX用户,请手动输入文件路径,而不是从“显示简介”中复制。如果您从“显示简介”中复制文件路径,您将得到如下所示:/用户/用户名<200e><2068><2068>/桌面<2069>/源.txt

bfnvny8b

bfnvny8b5#

我遇到了同样的错误,由windows文件路径上的转义字符引起。例如,我的应用程序正在寻找“C:\Users\david\my%20folder%20name\source.txt“,而真实的路径是“C:\Users\david\my folder name\source.txt“。

slsn1g29

slsn1g296#

在此不放弃所有可能的解决方案,当您在Windows环境中运行Android Studio并使用非NFTS格式化的外部硬盘上的项目目录时,也会发生此错误。]
如果是这种情况,只需将项目移动到主HDD(NTFS)中,然后再次重新加载项目,这次是从主HDD文件夹路径加载。

相关问题