我有这个简短的片段:
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创建之前的目标值是“file:/ C:/ Users / dario / jCommesse / jCommesseDB” 如果我在Windows浏览器中剪切并粘贴它(没有最后一个条目)它可以工作......
答案 0 :(得分:4)
您提供的路径不是文件路径,而是URI。 我建议你尝试以下方法:
URI uri = new URI("file://c:/foo/bar");
File f = new File(uri).
答案 1 :(得分:1)
对我来说,好像开头的“file:/”是问题...尝试getAbsolutePath()而不是toString()。
答案 2 :(得分:1)
File
constructor taking a String
需要路径名。路径名称不是URI。
从字符串的前面删除file:/
(或者更好的是,使用getPath()
而不是toString()
)来到达您需要的路径。