这是本次讨论的后续问题
renaming file name inside a zip file
我使用上面帖子中给出的建议来重命名zip文件的内部文件名。它在Windows中运行良好。当我使用Linux时,如上一条评论中所述,只有当文件由运行java代码的id拥有时才会发生重命名。如果我将代码作为“xxx”id运行,并且该文件归“yyy”所有,则重命名不会发生。这即使文件权限是777.我试图检查源文件是否可写,它是。不知道为什么会这样。请分享你的想法。一如既往地谢谢。
URI uri = URI.create("jar:file://"+ SourceDirName + "/" +
SourceFileName);
FileSystem zipfs = FileSystems.newFileSystem(uri,
Collections.<String,Object>emptyMap())) {
Path sourceURI = zipfs.getPath("/"+ intFileName);
Path destinationURI = zipfs.getPath("/"+ ZipInternalName);
Files.move(sourceURI, destinationURI);
intFileName是zip内部文件名 ZipInternalName是我想用来重命名intFileName
的新名称要检查运行代码的id是否具有SourceURI的写访问权限,我试过这个
if (Files.isWritable(sourceURI)){
System.out.println("true");
}
我得到了一个真正的可写,但再次重命名不起作用
也试过
Files.move(sourceURI, sourceURI.resolvesibling(destinationURI);
但没有用