如何从 Java 中的 URI 获取正确的文件夹句柄?

发布于 2024-12-19 18:42:29 字数 513 浏览 0 评论 0原文

我注意到一个小问题。我的应用程序获取的是文件的 URI,例如 file:///C:/temp/somefolder/somedocument.txt 作为字符串。

我的应用程序要做的是检查文件夹中是否有更多文件并处理它们。为此,我通常会执行类似的操作

File file = new File(myURI);
File folder = file.getParentFile();
File[] peers = folder.getParentFile().listFiles();

,不幸的是,当您使用 URI 时,这似乎根本不起作用。 .listFiles 始终返回 null,即使我打开文件夹 URI 的 File() 句柄也是如此。

有什么想法可以解决这个问题吗?

PS:Filejava.net.URI 的方法都不会返回不是 URI 的绝对路径;)

I noticed a little issue. What my application gets is a URI of a file e.g. file:///C:/temp/somefolder/somedocument.txt as a String.

What my application has to do is check the folder for more files and process them. To do that, I'd normally do something like

File file = new File(myURI);
File folder = file.getParentFile();
File[] peers = folder.getParentFile().listFiles();

Unfotunately, this doesn't seem to work at all when you use URI's. .listFiles always returns null, even if I open a File() handle to the URI of the folder.

Any ideas how to get around this problem?

P.S.: none of the methods of File or java.net.URI will return an absolute path which is not a URI ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甚是思念 2024-12-26 18:42:29

您的 myURI 实际上是 URIString 表示形式。您调用的 File 的构造函数请

public File(String pathname)

注意 pathname 位,它不是 URI-ish 值。

尝试

File file = new File(new URI(myURI));

Your myURI is actually a String representation of a URI. The constructor of File that you're calling is

public File(String pathname)

Note the pathname bit, it's not a URI-ish value.

Try

File file = new File(new URI(myURI));
固执像三岁 2024-12-26 18:42:29

尝试:

File file = new File(myURI);
File[] peers = new File(file.getParent()).listFiles();

这对我有用。但是,如果我使用你的代码,当我调用 getParentFile() 时,我会得到一个 NPE

Try:

File file = new File(myURI);
File[] peers = new File(file.getParent()).listFiles();

This worked for me. However if I use your code I get a NPE when I call getParentFile()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文