質問編集履歴

5

以前は完璧に動いていたコードが動かなくなったことに対する説明

2020/08/22 05:10

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -109,3 +109,87 @@
109
109
  macを使っています。
110
110
 
111
111
  ![イメージ説明](2f1e36009ee8406c81e3f3d4ace52bb4.png)
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ ###なぜか今まではできていたものができなくなってしまいました。
120
+
121
+ - コードは全てアドバイスをいただいた時のものに戻しました。
122
+
123
+ - 2つのtextファイルをまとめてzipを作成し(macを使っているのですが、macを使うと_MACOS といった余計な階層が入ってしまうためZIPANGというソフトを使ってWindowsZIPを作ります
124
+
125
+ - 今まではmacで作ったzipでもtextに変換して内部メモリに保存できていました。
126
+
127
+ - 2つのtextファイルをzipに入れているのですが、1つめは "hello.txt"で、2つめが "hello2.txt"です。
128
+
129
+ - 下がエラーコードです。
130
+
131
+ - while分の関係で最後のファイルにアクセスする時にエラーが出るのかと考え、while分を消して、zipのなかの1つめのtxtファイルのみを、内部ストレージに保存するようにしようとしたのですが、保存されたものは、simpleというzipファイルの名前のexecファイルでした。(下のエラーはwhile文を使っていて、コードには変更を加えていない時のエラーです)
132
+
133
+ - 一度動かすことができたのにもかかわらずエラーが起こるようになってしまったということは私の開発環境の問題でしょうか?
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+ ```java
142
+
143
+ W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.pdf/files/simple/hello2.txt: open failed: ENOTDIR (Not a directory)
144
+
145
+ at libcore.io.IoBridge.open(IoBridge.java:496)
146
+
147
+ at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
148
+
149
+ at java.io.FileOutputStream.<init>(FileOutputStream.java:125)
150
+
151
+ at com.example.pdf.MainActivity.download(MainActivity.java:108)
152
+
153
+ at com.example.pdf.MainActivity$1.onClick(MainActivity.java:54)
154
+
155
+ at android.view.View.performClick(View.java:7259)
156
+
157
+ at android.view.View.performClickInternal(View.java:7236)
158
+
159
+ at android.view.View.access$3600(View.java:801)
160
+
161
+ at android.view.View$PerformClick.run(View.java:27892)
162
+
163
+ W/System.err: at android.os.Handler.handleCallback(Handler.java:883)
164
+
165
+ at android.os.Handler.dispatchMessage(Handler.java:100)
166
+
167
+ at android.os.Looper.loop(Looper.java:214)
168
+
169
+ at android.app.ActivityThread.main(ActivityThread.java:7356)
170
+
171
+ at java.lang.reflect.Method.invoke(Native Method)
172
+
173
+ at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
174
+
175
+ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
176
+
177
+ Caused by: android.system.ErrnoException: open failed: ENOTDIR (Not a directory)
178
+
179
+ at libcore.io.Linux.open(Native Method)
180
+
181
+ at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
182
+
183
+ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
184
+
185
+ at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
186
+
187
+ W/System.err: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7255)
188
+
189
+ at libcore.io.IoBridge.open(IoBridge.java:482)
190
+
191
+ ... 15 more
192
+
193
+ コード
194
+
195
+ ```

4

ファイルが文字化けしまいます。

2020/08/22 05:10

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -99,3 +99,13 @@
99
99
  ![イメージ説明](4edd45af3c8e9d54e2888e9ba64f0fa1.png)
100
100
 
101
101
  このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?
102
+
103
+
104
+
105
+ 何度も申し訳ありません。
106
+
107
+ 解凍されたファイルが文字化けしているのですが、文字コードを変更するべきでしょうか?
108
+
109
+ macを使っています。
110
+
111
+ ![イメージ説明](2f1e36009ee8406c81e3f3d4ace52bb4.png)

3

追記しました。どうぞよろしくお願いします。

2020/08/14 14:49

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -88,6 +88,14 @@
88
88
 
89
89
  }
90
90
 
91
+ ```
91
92
 
93
+ おかげさまで、zipの中身を取得することができました。
92
94
 
93
- ```
95
+ わざわざコードまで書いていただき本当にありがとうございます。
96
+
97
+ ![イメージ説明](651ed3131608c294aa6510be2772aa6b.png)
98
+
99
+ ![イメージ説明](4edd45af3c8e9d54e2888e9ba64f0fa1.png)
100
+
101
+ このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?

2

コードの変更

2020/08/14 13:22

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -14,13 +14,29 @@
14
14
 
15
15
  ```java
16
16
 
17
+ @RequiresApi(api = Build.VERSION_CODES.N)
18
+
19
+ public void main(String[] args) throws IOException {
20
+
21
+ // 文字コード
22
+
23
+ Charset charset = Charset.forName("MS932");
24
+
25
+
26
+
27
+ // InputStream is = getResources().getAssets().open("zipfile.zip");
28
+
29
+ // String inputfile1= convertStreamToString(is);
30
+
17
31
  // 入力ファイル
18
32
 
19
- String inputfile1 = "//Android_asset/zipfile.zip";
33
+ String inputfile1 = "zipfile.zip";
34
+
35
+
20
36
 
21
37
  // 出力先
22
38
 
23
- String outputfile1 = "//Android_asset/text.txt";
39
+ String outputfile1 = "text.txt";
24
40
 
25
41
 
26
42
 
@@ -34,6 +50,44 @@
34
50
 
35
51
  ZipInputStream zis = new ZipInputStream(bis,charset);
36
52
 
53
+ ) {
54
+
55
+ ZipEntry zipentry;
56
+
57
+ // zipの中のファイルがあるだけ繰り返す
58
+
59
+ // 展開後のファイルサイズ、ファイル名に注意
60
+
61
+ while((zipentry = zis.getNextEntry()) !=null) {
62
+
63
+ try(FileOutputStream fos = new FileOutputStream(outputfile1 + zipentry.getName());
64
+
65
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
66
+
37
- )
67
+ ){
68
+
69
+ byte[] data = new byte[1024]; // 1KB 調整可
70
+
71
+ int count = 0;
72
+
73
+ while((count = zis.read(data)) != -1){
74
+
75
+ bos.write(data,0,count);
76
+
77
+ }
78
+
79
+ }
80
+
81
+ }
82
+
83
+ } catch (IOException e) {
84
+
85
+ e.printStackTrace();
86
+
87
+ }
88
+
89
+ }
90
+
91
+
38
92
 
39
93
  ```

1

changed pic

2020/08/14 00:00

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ![イメージ説明](808f0e90e8ca74fc220b81f87de00460.png)
1
+ ![イメージ説明](97bf3b68a2605a3d86b42867b574e81c.png)
2
2
 
3
3
  AndroidStudioで、この階層にアクセスしたいです。
4
4
 
@@ -10,11 +10,13 @@
10
10
 
11
11
  どうぞよろしくお願いします。
12
12
 
13
+
14
+
13
15
  ```java
14
16
 
15
17
  // 入力ファイル
16
18
 
17
- String inputfile1 = "//Android_asset/zipfile.txt";
19
+ String inputfile1 = "//Android_asset/zipfile.zip";
18
20
 
19
21
  // 出力先
20
22