在zip文件中重命名内部文件名

时间:2015-04-15 20:04:10

标签: java linux zip nio

这是本次讨论的后续问题

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);

但没有用

0 个答案:

没有答案