我想从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
请帮助
答案 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版本。