代码之家  ›  专栏  ›  技术社区  ›  Alessandro Valentino

在macOS上读取文件会产生FileNotFound,即使文件存在(并且具有权限)

  •  0
  • Alessandro Valentino  · 技术社区  · 1 年前

    我有一个javafx应用程序,它允许选择一个图像并显示它,或者允许您选择一个文件夹,读取里面的图像并显示它们。 无论哪种情况,它在Windows上都可以正常工作,但在macOS上运行时,它都不工作,并抛出 FileNotFoundException . 以下是阅读代码:

    String path = Paths.get(pathToFile).toUri().toString()
    

    那条线给了我路`file:///Users/userName/Downloads/untitled%20folder/image.png`但随后异常显示“file:/Users/username/Downloads/untitled%20folder/image.png(没有这样的文件或目录)”。我试图从文件夹中删除空间,授予0777所有文件的权限。它就是读不出来。
    我想补充一点,文件路径是从javaFX文件选择器获得的,它不是手动放置的。
    编辑
    完整的代码大致如下:
    String path = Paths.get(loadedFilePath).toUri().toString();
    File file = new File(path);
    System.out.println(file.exists());
    com.drew.metadata.Metadata metadata = ImageMetadataReader.readMetadata(new File(path));
    

    在中引发异常 readMetadata() 方法,但已经是 file.exists() retuurns false

    1 回复  |  直到 1 年前
        1
  •  3
  •   Mureinik    1 年前

    这个 File 类使用本地路径,而不是URI,因此通过 Paths 只是为了获得一个URI,然后将其转换为字符串,并将其与 文件 不会起作用,正如你所看到的。

    相反,您可以使用 路径 以获得 文件 对象直接:

    File file = Paths.get(loadedFilePath).toFile();