AndroidStudioで、この階層にアクセスしたいです。
階層の指定方法を教えていただけないでしょうか?
txtファイルが更新されないので、階層の指定が間違っていると思っています。
どうぞよろしくお願いします。
java
1 @RequiresApi(api = Build.VERSION_CODES.N) 2 public void main(String[] args) throws IOException { 3 // 文字コード 4 Charset charset = Charset.forName("MS932"); 5 6// InputStream is = getResources().getAssets().open("zipfile.zip"); 7// String inputfile1= convertStreamToString(is); 8 // 入力ファイル 9 String inputfile1 = "zipfile.zip"; 10 11 // 出力先 12 String outputfile1 = "text.txt"; 13 14 15 try( 16 FileInputStream fis = new FileInputStream(inputfile1); 17 BufferedInputStream bis = new BufferedInputStream(fis); 18 ZipInputStream zis = new ZipInputStream(bis,charset); 19 ) { 20 ZipEntry zipentry; 21 // zipの中のファイルがあるだけ繰り返す 22 // 展開後のファイルサイズ、ファイル名に注意 23 while((zipentry = zis.getNextEntry()) !=null) { 24 try(FileOutputStream fos = new FileOutputStream(outputfile1 + zipentry.getName()); 25 BufferedOutputStream bos = new BufferedOutputStream(fos); 26 ){ 27 byte[] data = new byte[1024]; // 1KB 調整可 28 int count = 0; 29 while((count = zis.read(data)) != -1){ 30 bos.write(data,0,count); 31 } 32 } 33 } 34 } catch (IOException e) { 35 e.printStackTrace(); 36 } 37 }
おかげさまで、zipの中身を取得することができました。
わざわざコードまで書いていただき本当にありがとうございます。
このようにして、zipを解凍して、ファイル名を取得し、中身を取得していることを確認できました。現在、ファイルの出力先を調べているのですが、確認できません。 package名は、package com.example.pdf;なのですが、どうしてfileが作成されないのかわかりますでしょうか?
何度も申し訳ありません。
解凍されたファイルが文字化けしているのですが、文字コードを変更するべきでしょうか?
macを使っています。
###なぜか今まではできていたものができなくなってしまいました。
- コードは全てアドバイスをいただいた時のものに戻しました。
- 2つのtextファイルをまとめてzipを作成し(macを使っているのですが、macを使うと_MACOS といった余計な階層が入ってしまうためZIPANGというソフトを使ってWindowsZIPを作ります
- 今まではmacで作ったzipでもtextに変換して内部メモリに保存できていました。
- 2つのtextファイルをzipに入れているのですが、1つめは "hello.txt"で、2つめが "hello2.txt"です。
- 下がエラーコードです。
- while分の関係で最後のファイルにアクセスする時にエラーが出るのかと考え、while分を消して、zipのなかの1つめのtxtファイルのみを、内部ストレージに保存するようにしようとしたのですが、保存されたものは、simpleというzipファイルの名前のexecファイルでした。(下のエラーはwhile文を使っていて、コードには変更を加えていない時のエラーです)
- 一度動かすことができたのにもかかわらずエラーが起こるようになってしまったということは私の開発環境の問題でしょうか?
java
1W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.example.pdf/files/simple/hello2.txt: open failed: ENOTDIR (Not a directory) 2 at libcore.io.IoBridge.open(IoBridge.java:496) 3 at java.io.FileOutputStream.<init>(FileOutputStream.java:235) 4 at java.io.FileOutputStream.<init>(FileOutputStream.java:125) 5 at com.example.pdf.MainActivity.download(MainActivity.java:108) 6 at com.example.pdf.MainActivity$1.onClick(MainActivity.java:54) 7 at android.view.View.performClick(View.java:7259) 8 at android.view.View.performClickInternal(View.java:7236) 9 at android.view.View.access$3600(View.java:801) 10 at android.view.View$PerformClick.run(View.java:27892) 11W/System.err: at android.os.Handler.handleCallback(Handler.java:883) 12 at android.os.Handler.dispatchMessage(Handler.java:100) 13 at android.os.Looper.loop(Looper.java:214) 14 at android.app.ActivityThread.main(ActivityThread.java:7356) 15 at java.lang.reflect.Method.invoke(Native Method) 16 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 17 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 18 Caused by: android.system.ErrnoException: open failed: ENOTDIR (Not a directory) 19 at libcore.io.Linux.open(Native Method) 20 at libcore.io.ForwardingOs.open(ForwardingOs.java:167) 21 at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252) 22 at libcore.io.ForwardingOs.open(ForwardingOs.java:167) 23W/System.err: at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7255) 24 at libcore.io.IoBridge.open(IoBridge.java:482) 25 ... 15 more 26コード
回答1件
あなたの回答
tips
プレビュー