回答編集履歴
2
本文一部修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
先にコメントを書きましたが、assetsフォルダーを出力先とすることはできません。その代わりに、openFileOutput()を用いてアプリケーション用の領域にファイルを書き出す方法に変更するように修正してみました。このメソッドを用いると、`/data/data/<パッケージ名>/files/`の下にファイルが書き出されます。
|
1
|
+
先にコメントを書きましたが、assetsフォルダーを出力先とすることはできません。その代わりに、~~openFileOutput()を用いてアプリケーション用の領域に~~getExternalFilesDir()を用いて内部ストレージのパッケージ専用フォルダーにファイルを書き出す方法に変更するように修正してみました。このメソッドを用いると、~~`/data/data/<パッケージ名>/files/`~~`<内部ストレージ>/Android/<パッケージ名>/files/`の下にファイルが書き出されます。
|
2
2
|
|
3
3
|
|
4
4
|
```java
|
1
コード修正
answer
CHANGED
@@ -16,12 +16,14 @@
|
|
16
16
|
BufferedInputStream bis = new BufferedInputStream(is);
|
17
17
|
ZipInputStream zis = new ZipInputStream(bis, charset);
|
18
18
|
) {
|
19
|
+
File path = getExternalFilesDir(null); // ☆☆☆追加☆☆☆
|
20
|
+
|
19
21
|
ZipEntry zipentry;
|
20
22
|
// zipの中のファイルがあるだけ繰り返す
|
21
23
|
// 展開後のファイルサイズ、ファイル名に注意
|
22
24
|
while ((zipentry = zis.getNextEntry()) != null) {
|
23
|
-
try (
|
25
|
+
try (FileOutputStream fos = new FileOutputStream(path + "/" + zipentry.getName()); // ☆☆☆修正☆☆☆
|
24
|
-
BufferedOutputStream bos = new BufferedOutputStream(
|
26
|
+
BufferedOutputStream bos = new BufferedOutputStream(fos); // os→fosに修正
|
25
27
|
) {
|
26
28
|
byte[] data = new byte[1024]; // 1KB 調整可
|
27
29
|
int count = 0;
|