HTTPサーバー上に5行の文字列が入っているテキストファイルdata.txtをZip形式で保存したdata.zipがあります。
非同期でHttpUrlConnectionを使ってこのZipファイルをアプリのローカルフォルダに保存しました。
そしてこの保存したZipファイルをzipEntryにしました。
質問はこのzipEntryの中から5行の文字列データを取り出すにはどのようなメソッドを使ったらいいのでしょうか?
ちなみに下記はできます。
・zipEntryから解凍したファイル名はzipEntry.getNameで取得することはできます。
・Zipデータでない場合はInputStreamとBufferdReader.readLineなどを
使って取得することはできます。(ZipEntryからの取得が分からない)
よろしくお願いします。
環境 os mac
開発環境 Android studio 2.2.3
MainActivity.java
public
1 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.activity_main); 6 7 try { 8 new HttpGetTask().execute( 9 new URL("http://○○○.com/data.zip")); 10 11 } catch (MalformedURLException e) { 12 e.printStackTrace(); 13 } 14 15 zipExpand(); 16 17 18 public void zipExpand() { 19 ZipInputStream zipInputStream = null; 20 ZipEntry zipEntry = null; 21 try { 22 zipInputStream = new ZipInputStream(openFileInput("data.zip")); 23 //zipファイルに含まれるエントリに対して順にアクセスする 24 while ((zipEntry = zipInputStream.getNextEntry())!= null){ 25 ★File newFile = new File(zipEntry.getName()); 26 Log.d("UAA:newFile", String.valueOf(newFile)); 27 28 } 29 } catch (FileNotFoundException e) { 30 e.printStackTrace(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 } 35} 36```HttpGetTask.java 37``````ここに言語を入力 38public final class HttpGetTask extends AsyncTask<URL, Void, String> { 39 40 @Override 41 protected String doInBackground(URL... urls) { 42 //取得したテキストを格納する変数 43 final StringBuilder result = new StringBuilder(); 44 //アクセス先URL 45 final URL url = urls[0]; 46 47 HttpURLConnection con = null; 48 try { 49 //ローカル処理 50 //コネクション取得 51 con = (HttpURLConnection)url.openConnection(); 52 //UserAgentを設定する 53 con.setRequestProperty("User-Agent", "pass=XXXXXXX"); 54 con.connect(); 55 Log.d("UAA", String.valueOf(con)); 56 57 //HTTpレスポンスコード 58 final int status = con.getResponseCode(); 59 if (status == HttpURLConnection.HTTP_OK){ 60 //通信に成功したら 61 //ファイルのダウンロード処理を実行する 62 //読み込み用ストリーム 63 FileOutputStream fileOutputStream 64 = MyApplication.getmContext().openFileOutput( 65 "data.zip", Context.MODE_PRIVATE); 66 InputStream inputStream = con.getInputStream(); 67 byte[] buffer = new byte[1024]; 68 //一行ずつテキストを読み込む 69 int len = 0; 70 while ((len = inputStream.read(buffer))>0){ 71 fileOutputStream.write(buffer, 0, len); 72 } 73 //各ストリームを閉じる 74 fileOutputStream.close(); 75 inputStream.close(); 76 } 77 }catch (MalformedURLException e1) { 78 e1.printStackTrace(); 79 }catch (ProtocolException e1){ 80 e1.printStackTrace(); 81 } catch (IOException e1) { 82 e1.printStackTrace(); 83 }finally { 84 if (con != null){ 85 //コネクションを切断 86 con.disconnect(); 87 } 88 } 89 return result.toString(); 90 } 91}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。