0

プログラミング android をアセットから /sdcard/ に解凍する方法、以下の私のコードは nexus7 では成功しませんが、nexus7 に加えて実行すると問題なく、データを抽出できます。

解凍を実行します。

new Thread(new Runnable() {
    @Override
    public void run() {
        UnZip.start();
    }
}).start();


 private Thread UnZip = new Thread() {
            @Override
        public void run() {
            try {
                final int BUFFER = 8192;

                ZipInputStream inputStream = new ZipInputStream(getAssets().open("file.zip"));

                for (ZipEntry entry = inputStream.getNextEntry(); entry != null; entry = inputStream
                        .getNextEntry()) {

                    String innerFileName = "/sdcard/" + File.separator
                            + entry.getName();
                    File innerFile = new File(innerFileName);

                    if (entry.isDirectory()) {
                        innerFile.mkdirs();
                    } else {
                        FileOutputStream outputStream = new FileOutputStream(
                                innerFileName);

                        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
                                outputStream, BUFFER);

                        int count = 0;
                        byte[] data = new byte[BUFFER];
                        while ((count = inputStream.read(data, 0, BUFFER)) != -1) {
                            bufferedOutputStream.write(data, 0, count);
                        }

                        bufferedOutputStream.flush();
                        bufferedOutputStream.close();
                    }
                }
                inputStream.closeEntry();
                inputStream.close();

                     } catch (Exception e) {  

                 }
            }
        };
4

1 に答える 1

1

この方法でSDカードを探す代わりに

 String innerFileName = "/sdcard/" + File.separator
                            + entry.getName();

環境APIを使用する

  String innerFileName = Environment.getExternalStorageDirectory().toString() + File.separator + entry.getName();

WRITE_EXTERNAL_STORAGEAndroidManifest.xmlに権限を追加することを忘れないでください

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
于 2013-01-16T11:47:56.203 に答える