2011-09-09 121 views
0

我做一個REST調用,並通過該下載JSON文件和我的Android設備上本地存儲

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

從服務器獲取一個JSON文件現在我想這個存儲到我使用FileOutputStream中本地文件要做到這一點,但問題是如何有效地轉換爲InputStream如果我使用這樣的事情

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(); 
      } 

它存儲速度很慢這我得到的文件是高達100KB到OutputStream中有沒有其他更快的方法或任何其他方式,我可以用它來存儲json文件在我的設備中è?

我的應用程序大量使用這個json,我不想每次調用REST。

感謝 Pranay

+0

請看看我編輯的新答案。 Thnaks :-) – user370305

回答

0

嘗試使用org.apache.commons.io.IOUtils的

IOUtils.copy(is,fos); 

讓我們看看,有什麼事情發生。謝謝,

編輯:你爲什麼不使用sqlite數據庫?一次解析JSON結果並將其僅插入數據庫中一次,然後始終快速執行。

編輯:嘗試寫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需要每天更新我正在使用jakson,它給我pojo非常快,所以我不需要通過從我的json到sqllite的額外轉換 –

+0

下載org.apache的jar文件。 commons.io以及使用import jar在構建路徑中使用該jar文件。 – user370305

+0

感謝它工作得很好一個問題,因爲圖書館是270 kb有什麼方法可以刪除未使用的部分?我知道我可以在android中使用progaurd有沒有其他的替代方案,因爲我真的不需要混淆代碼 –

相關問題