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 に答える