2011-09-09 14 views
0

私はREST呼び出しを行うと、このダウンロードJSONファイルと、今、私はたFileOutputStreamを使用していますローカルファイルにこれを保存したい

HttpGet httpget = new HttpGet("someurl"); 
HttpResponse response = httpclient.execute(httpget); 
HttpEntity entity = response.getEntity(); 
InputStream source = entity.getContent(); 

により、サーバからのJSONファイルを取得しています私のAndroidデバイス上でローカルに保存しますこれを行うが、問題は効果的に私は、非常に私が取得していますファイルを遅く保存され、この

FileOutputStream fos = openFileOutput(filename,Context.MODE_PRIVATE); 

      int nextChar; 
      while ((nextChar = source.read()) != -1) { 
       fos.write((char) nextChar); 
       System.out.println((char) nextChar); 
       fos.flush(); 
      } 

のようなものを使用していた場合OutputStreamにInputStreamを変換する方法でする点で最大100キロバイトは、他のより高速な方法がある場合、または私のdevicにjsonファイルを格納するために使用できる他の方法e?

私のアプリケーションでは、このjsonが大量に使用されており、毎回RESTを呼びたくありません。 org.apache.commons.io.IOUtilsの

IOUtils.copy(is,fos); 

を使用する Pranay

+0

私の新しい編集の回答を見てください。 Thnaks :-) – user370305

答えて

0

試みは、どのような出来事を見ることができます

感謝。ありがとう、

EDIT:どうしてあなたはsqliteデータベースを使用していませんか? JSONの結果を1回だけ解析し、それをデータベースに1回だけ挿入すると、常に高速に実行されます。

EDIT:これは私をたくさん助けた、書き込みJSONファイル

try {  
     FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND); 
     fos.write(myJSONString.getBytes()); 
     fos.close();  
     //Log.d(TAG, "Written to file"); 
    } 
    catch (Exception e) 
    {  
     Log.d(TAG, "cought");  
     e.printStackTrace(); 
     } 
+0

このエラーが発生するインポートorg.apache.commons.ioを解決できません。なぜ私はsqlliteを使っていないのですか?私のjsonは毎日更新する必要があります。私は非常に速いpojoを提供するjaksonを使用していますので、私のjsonからsqlliteへの追加の変換を行う必要はありません –

+0

org.apacheのjarファイルをダウンロードしてください。 commons.ioを使用し、import jarを使用してビルドパスにjarファイルを使用します。 – user370305

+0

ライブラリは270kbですから、未使用の部分を取り除くことはできますか?私はアンドロイドでprogaurdを使うことができるということを知っています。私は本当に難読化されたコードを必要としません。 –

関連する問題