如何在android中删除zip文件中的文件

时间:2015-01-21 08:44:26

标签: java android zip truezip

我想从zip文件中删除一个文件而不在android中提取它。我首先用java使用以下代码

Path zipFilePath = Paths.get(filePaths); //gave the path of the zip with zip file name
try( FileSystem fs = FileSystems.newFileSystem(zipFilePath, null) ){
    Path pathInZipfile = fs.getPath(reVsl3); //reVsl3 String which holds the name of the file to be deleted in  the zip file
  zipDelLoc=reVsl3; //just assigning it for future use
        System.out.println("About to delete an entry from ZIP File" + pathInZipfile.toUri() ); 
        // Execute Delete 
        Files.delete(pathInZipfile);
        System.out.println("File successfully deleted"); 
}
 catch (IOException e) {
     System.out.println(e+"Error here?");
}

这在netbeans中工作得很好,但它在ADT中不起作用,在logcat中出现错误

java.lang.NoClassDefFoundError: java.nio.file.Paths

我搜索了一个解决方案,并得到一个暗示android没有'java.nio.file.Paths'这个东西, 我正在寻找替代解决方案,zip4j或TrueZip将在这里做到这一点,

我尝试使用truezip,但使用此代码

TFile archive = new TFile("archive.zip");
for (String member : archive.list())
 System.out.println(member);

但archive.list()返回null,但archive.length返回正确的文件大小。

我不知道我在这里做错了什么,我在一个罐子里下载了truezip 7.7。但是当我给出import de.schlichtherle.io.File

时,我收到了一个错误

请帮助

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的Java?

仔细检查您的导入。它应该类似于de.schlichtherle.truezip.nio.file.TPath;当使用TrueZip时,即使您没有使用它,也需要导入java.nio.paths,而不是使用truezip的路径风格。

确保您包含所有正确的依赖项。我假设您正在使用Gradle,因此依赖关系看起来像这样:

'de.schlichtherle.truezip:truezip-file:7.7.9'

我使用Maven在Java项目中导入依赖项时遇到了类似的错误。尝试这些并提供您的Java版本。