teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

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

2020/08/22 05:10

投稿

alizona
alizona

スコア126

title CHANGED
File without changes
body CHANGED
@@ -53,4 +53,46 @@
53
53
  何度も申し訳ありません。
54
54
  解凍されたファイルが文字化けしているのですが、文字コードを変更するべきでしょうか?
55
55
  macを使っています。
56
- ![イメージ説明](2f1e36009ee8406c81e3f3d4ace52bb4.png)
56
+ ![イメージ説明](2f1e36009ee8406c81e3f3d4ace52bb4.png)
57
+
58
+
59
+
60
+ ###なぜか今まではできていたものができなくなってしまいました。
61
+ - コードは全てアドバイスをいただいた時のものに戻しました。
62
+ - 2つのtextファイルをまとめてzipを作成し(macを使っているのですが、macを使うと_MACOS といった余計な階層が入ってしまうためZIPANGというソフトを使ってWindowsZIPを作ります
63
+ - 今まではmacで作ったzipでもtextに変換して内部メモリに保存できていました。
64
+ - 2つのtextファイルをzipに入れているのですが、1つめは "hello.txt"で、2つめが "hello2.txt"です。
65
+ - 下がエラーコードです。
66
+ - while分の関係で最後のファイルにアクセスする時にエラーが出るのかと考え、while分を消して、zipのなかの1つめのtxtファイルのみを、内部ストレージに保存するようにしようとしたのですが、保存されたものは、simpleというzipファイルの名前のexecファイルでした。(下のエラーはwhile文を使っていて、コードには変更を加えていない時のエラーです)
67
+ - 一度動かすことができたのにもかかわらずエラーが起こるようになってしまったということは私の開発環境の問題でしょうか?
68
+
69
+
70
+
71
+ ```java
72
+ W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.pdf/files/simple/hello2.txt: open failed: ENOTDIR (Not a directory)
73
+ at libcore.io.IoBridge.open(IoBridge.java:496)
74
+ at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
75
+ at java.io.FileOutputStream.<init>(FileOutputStream.java:125)
76
+ at com.example.pdf.MainActivity.download(MainActivity.java:108)
77
+ at com.example.pdf.MainActivity$1.onClick(MainActivity.java:54)
78
+ at android.view.View.performClick(View.java:7259)
79
+ at android.view.View.performClickInternal(View.java:7236)
80
+ at android.view.View.access$3600(View.java:801)
81
+ at android.view.View$PerformClick.run(View.java:27892)
82
+ W/System.err: at android.os.Handler.handleCallback(Handler.java:883)
83
+ at android.os.Handler.dispatchMessage(Handler.java:100)
84
+ at android.os.Looper.loop(Looper.java:214)
85
+ at android.app.ActivityThread.main(ActivityThread.java:7356)
86
+ at java.lang.reflect.Method.invoke(Native Method)
87
+ at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
88
+ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
89
+ Caused by: android.system.ErrnoException: open failed: ENOTDIR (Not a directory)
90
+ at libcore.io.Linux.open(Native Method)
91
+ at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
92
+ at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
93
+ at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
94
+ W/System.err: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7255)
95
+ at libcore.io.IoBridge.open(IoBridge.java:482)
96
+ ... 15 more
97
+ コード
98
+ ```

4

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

2020/08/22 05:10

投稿

alizona
alizona

スコア126

title CHANGED
File without changes
body CHANGED
@@ -48,4 +48,9 @@
48
48
  わざわざコードまで書いていただき本当にありがとうございます。
49
49
  ![イメージ説明](651ed3131608c294aa6510be2772aa6b.png)
50
50
  ![イメージ説明](4edd45af3c8e9d54e2888e9ba64f0fa1.png)
51
- このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?
51
+ このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?
52
+
53
+ 何度も申し訳ありません。
54
+ 解凍されたファイルが文字化けしているのですが、文字コードを変更するべきでしょうか?
55
+ macを使っています。
56
+ ![イメージ説明](2f1e36009ee8406c81e3f3d4ace52bb4.png)

3

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

2020/08/14 14:49

投稿

alizona
alizona

スコア126

title CHANGED
File without changes
body CHANGED
@@ -43,5 +43,9 @@
43
43
  e.printStackTrace();
44
44
  }
45
45
  }
46
-
47
- ```
46
+ ```
47
+ おかげさまで、zipの中身を取得することができました。
48
+ わざわざコードまで書いていただき本当にありがとうございます。
49
+ ![イメージ説明](651ed3131608c294aa6510be2772aa6b.png)
50
+ ![イメージ説明](4edd45af3c8e9d54e2888e9ba64f0fa1.png)
51
+ このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?

2

コードの変更

2020/08/14 13:22

投稿

alizona
alizona

スコア126

title CHANGED
File without changes
body CHANGED
@@ -6,15 +6,42 @@
6
6
  どうぞよろしくお願いします。
7
7
 
8
8
  ```java
9
+ @RequiresApi(api = Build.VERSION_CODES.N)
10
+ public void main(String[] args) throws IOException {
11
+ // 文字コード
12
+ Charset charset = Charset.forName("MS932");
13
+
14
+ // InputStream is = getResources().getAssets().open("zipfile.zip");
15
+ // String inputfile1= convertStreamToString(is);
9
16
  // 入力ファイル
10
- String inputfile1 = "//Android_asset/zipfile.zip";
17
+ String inputfile1 = "zipfile.zip";
18
+
11
19
  // 出力先
12
- String outputfile1 = "//Android_asset/text.txt";
20
+ String outputfile1 = "text.txt";
13
21
 
14
22
 
15
23
  try(
16
24
  FileInputStream fis = new FileInputStream(inputfile1);
17
25
  BufferedInputStream bis = new BufferedInputStream(fis);
18
26
  ZipInputStream zis = new ZipInputStream(bis,charset);
27
+ ) {
28
+ ZipEntry zipentry;
29
+ // zipの中のファイルがあるだけ繰り返す
30
+ // 展開後のファイルサイズ、ファイル名に注意
31
+ while((zipentry = zis.getNextEntry()) !=null) {
32
+ try(FileOutputStream fos = new FileOutputStream(outputfile1 + zipentry.getName());
33
+ BufferedOutputStream bos = new BufferedOutputStream(fos);
19
- )
34
+ ){
35
+ byte[] data = new byte[1024]; // 1KB 調整可
36
+ int count = 0;
37
+ while((count = zis.read(data)) != -1){
38
+ bos.write(data,0,count);
39
+ }
40
+ }
41
+ }
42
+ } catch (IOException e) {
43
+ e.printStackTrace();
44
+ }
45
+ }
46
+
20
47
  ```

1

changed pic

2020/08/14 00:00

投稿

alizona
alizona

スコア126

title CHANGED
File without changes
body CHANGED
@@ -1,12 +1,13 @@
1
- ![イメージ説明](808f0e90e8ca74fc220b81f87de00460.png)
1
+ ![イメージ説明](97bf3b68a2605a3d86b42867b574e81c.png)
2
2
  AndroidStudioで、この階層にアクセスしたいです。
3
3
 
4
4
  階層の指定方法を教えていただけないでしょうか?
5
5
  txtファイルが更新されないので、階層の指定が間違っていると思っています。
6
6
  どうぞよろしくお願いします。
7
+
7
8
  ```java
8
9
  // 入力ファイル
9
- String inputfile1 = "//Android_asset/zipfile.txt";
10
+ String inputfile1 = "//Android_asset/zipfile.zip";
10
11
  // 出力先
11
12
  String outputfile1 = "//Android_asset/text.txt";
12
13