我想改变我的Android应用程序行为,从阅读APK中的文本文件,直接从具有密码保护的RAR或ZIP文件中读取它(我认为它可能与在我的APK中编码时的保护相同) )。这是我提出这个问题的同一个项目:How to convert an UTF String to ANSI and Create an ANSI text file in SSD with JAVA-ANDROID
但我不知道该怎么做。当我想要更改此文件内容时,我总是需要重新编译我的APK以再次发送给每个特定的客户端。如果我将此文件放在受密码保护的压缩存档中,我可能只会部署此文件并告诉客户端在手机SSD上放置特定路径。
我的应用程序应该将文件解压缩为一个字符串(它是一个文本文件)或将其解压缩到SSD中的文件中(它不太安全,我需要在读取其内容后删除该文件)。我该怎么做?我需要一些第三方库吗?你能告诉我代码吗?我只是用Java乞讨。
答案 0 :(得分:2)
您可以尝试zip4j,然后执行此操作:
public String extractInputStream() {
ZipInputStream is = null;
String extracted = null;
try {
// get the zip
ZipFile zipFile = new ZipFile("/path/to/my/file.zip");
// set the password
if (zipFile.isEncrypted()) {
zipFile.setPassword("password");
}
//get the file inside the zip
FileHeader fileHeader = zipFile.getFileHeader("yourfile.txt");
if (fileHeader != null) {
is = zipFile.getInputStream(fileHeader);
//edited
extracted = new Scanner(is,"UTF-8").useDelimiter("\\A").next();
//edited
is.close();
}
} catch (ZipException e) {
e.printStackTrace(); //make something better here
} catch (FileNotFoundException e) {
e.printStackTrace();//make something better here
} catch (IOException e) {
e.printStackTrace();//make something better here
} catch (Exception e) {
e.printStackTrace();//make something better here
}
return extracted;
}
我没有测试这段代码,但你可以做,并改进它; - )