1

我想将我的 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 乞讨。

4

1 回答 1

3

您可以尝试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;
}

我没有测试这段代码,但你可以做到,并改进它;-)

于 2013-05-10T00:08:12.570 回答