File.mkdir 不起作用,我不明白为什么

发布于 2024-08-26 06:43:54 字数 733 浏览 3 评论 0 原文

我有这个简短的片段:

String target = baseFolder.toString() + entryName;
                target = target.substring(0, target.length() - 1);
                File targetdir = new File(target);
                if (!targetdir.mkdirs()) {
                    throw new Exception("Errore nell'estrazione del file zip");
                }

如果我留下最后一个字符(通常是斜杠)并不重要。这样做可以在 UNIX 和 Windows 上工作。该路径实际上是从基本文件夹的 URI 中获取的。正如您从 baseFolder.toString() 中看到的那样(baseFolder 是 URI 类型并且是正确的)。基本文件夹确实存在。我无法调试这个,因为我从 mkdir 得到的都是真或假,没有其他解释。奇怪的是,baseFolder 也是使用 mkdir 创建的,在这种情况下它可以工作。

现在我在窗户下。


创建 targetdir 之前的 target 值为“file:/C:/Users/dario/jCommesse/jCommesseDB” 如果我在 Windows 浏览器中剪切并粘贴它(没有最后一个条目),它就可以工作......

I've this brief snippet:

String target = baseFolder.toString() + entryName;
                target = target.substring(0, target.length() - 1);
                File targetdir = new File(target);
                if (!targetdir.mkdirs()) {
                    throw new Exception("Errore nell'estrazione del file zip");
                }

doesn't mattere if I leave the last char (that is usually a slash). It's done this way to work on both unix and windows. The path is actually obtained from the URI of the base folder. As you can see from baseFolder.toString() (baseFolder is of type URI and is correct). The base folder actually exists. I can't debug this because all I get is true or false from mkdir, no other explanations.The weird thing is that baseFolder is created as well with mkdir and in that case it works.

Now I'm under windows.


the value of target just before the creation of targetdir is "file:/C:/Users/dario/jCommesse/jCommesseDB"
if I cut and paste it (without the last entry) in windows explore it works...

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

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

发布评论

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

评论(3

眼藏柔 2024-09-02 06:43:54

您提供的路径不是文件路径,而是 URI。
我建议您尝试以下操作:

URI uri = new URI("file://c:/foo/bar");
File f = new File(uri).

The path you provide is not a file path, but a URI.
I suggest you try the following :

URI uri = new URI("file://c:/foo/bar");
File f = new File(uri).
巾帼英雄 2024-09-02 06:43:54

在我看来,好像开头的“file:/”就是问题所在......尝试 getAbsolutePath() 而不是 toString()。

It looks, to me, as if the "file:/" at the beginning is the problem... Try getAbsolutePath() instead of toString().

许久 2024-09-02 06:43:54

String 的 >File 构造函数需要一个路径名。路径名不是 URI。

从字符串前面删除 file:/ (或者更好的是,使用 getPath() 而不是 toString()) 获取您需要的路径。

The File constructor taking a String expects a path name. A path name is not an URI.

Remove the file:/ from the front of the String (or better yet, use getPath() instead of toString()) to get to the path you need.

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