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

Ale*_*ino 1 java macos javafx file macos-sonoma

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

String path = Paths.get(pathToFile).toUri().toString()
Run Code Online (Sandbox Code Playgroud)

那条线给了我路径

file:///Users/userName/Downloads/untitled%20folder/image.png

但随后例外说

file:/Users/username/Downloads/untitled%20folder/image.png (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

我尝试删除文件夹中的空间,为所有文件授予 0777 权限。它只是不读取它。
我想补充一点,文件路径是从 javaFX 文件选择器获取的,而不是手动放置在那里。

完整的代码差不多是这样的:

file:/Users/username/Downloads/untitled%20folder/image.png (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

方法中抛出了异常readMetadata(),但已经file.exists()返回 false。

Mur*_*nik 5

该类File使用本地路径,而不是 URI,因此,如您所见Paths,仅获取 URI,然后将其转换为字符串并将其与 a 一起使用File是行不通的。

相反,您可以使用直接Paths获取File对象:

File file = Paths.get(loadedFilePath).toFile();
Run Code Online (Sandbox Code Playgroud)