2013-05-10 117 views
1

我想將JSONObject存儲在文件中。 出於此目的,我將Object轉換爲字符串,然後將其存儲在一個文件中。 我使用的代碼是:從文件中檢索JSONObject

String card_string = card_object.toString(); 
//card_object is the JSONObject that I want to store. 

f = new File("/sdcard/myfolder/card3.Xcard"); 
//file 'f' is the file to which I want to store it. 

FileWriter fw = new FileWriter(f); 
fw.write(card_string); 
fw.close(); 

該代碼正常工作,因爲我需要它。現在我想從文件中取回那個對象。 我該怎麼做?我對使用什麼來讀取文件感到困惑? 和InputStreamFileReaderBufferedReader或什麼。我是JAVA/android開發新手。

請大家幫忙。用簡單的語言詳細解釋在不同情況下(如這樣)使用哪些I/O函數是值得歡迎的。我看過文檔,但您的建議是受歡迎的。

+1

http://stackoverflow.com/questions/10569021/read-json-from-assets-folder-into-an-arraylist-in-android – Nermeen 2013-05-10 10:42:56

+0

三江源拿到物品非常適合你的答案。你還可以看看這些問題嗎? http://stackoverflow.com/questions/16441330/declaring-mime-type-for-a-custom-file-that-is-to-be-sent-via-bluetooth和http://stackoverflow.com/questions/ 16413498/blue-tooth-file-not-sent-error – neerajDorle 2013-05-10 12:18:04

回答

3

使用可以使用BufferedReaderFileReader

File file = new File("/sdcard/myfolder/card3.Xcard"); 
StringBuilder text = new StringBuilder(); 
BufferedReader br = null; 

try { 
    br = new BufferedReader(new FileReader(file)); 
    String line; 

    while ((line = br.readLine()) != null) { 
     text.append(line); 
     text.append('\n'); 
    } 
} catch (IOException e) { 
    // do exception handling 
} finally { 
    try { br.close(); } catch (Exception e) { } 
} 

另外我建議你使用Environment.getExternalStorageDirectory();建立起來的路徑。這是不太具體的設備。

乾杯!

+0

謝謝你,先生,非常感謝!它工作正常....你能再幫我一次嗎?請看看這些問題。真的需要幫助。 http://stackoverflow.com/questions/16441330/declaring-mime-type-for-a-custom-file-that-is-to-be-sent-via-bluetooth和http://stackoverflow.com/questions/ 16413498/blue-tooth-file-not-sent-error – neerajDorle 2013-05-10 12:11:05

1
File contentfile = new File(filePath); 
@SuppressWarnings("resource") 
FileInputStream readJsonTextfile = new FileInputStream(contentfile); 

Reader ContetnUrlJson = new InputStreamReader(readJsonTextfile); 
+0

非常感謝您的回答。你還可以看看這些問題嗎? http://stackoverflow.com/questions/16441330/declaring-mime-type-for-a-custom-file-that-is-to-be-sent-via-bluetooth和http://stackoverflow.com/questions/ 16413498/blue-tooth-file-not-sent-error – neerajDorle 2013-05-10 12:12:12

4

您可以使用此代碼讀取文件。

BufferedReader input = null; 
try { 
    input = new BufferedReader(new InputStreamReader(
      openFileInput("jsonfile"))); 
    String line; 
    StringBuffer content = new StringBuffer(); 
    char[] buffer = new char[1024]; 
    int num; 
    while ((num = input.read(buffer)) > 0) { 
     content.append(buffer, 0, num); 
    } 
     JSONObject jsonObject = new JSONObject(content.toString()); 

}catch (IOException e) {...} 

然後你可以使用你的JSONObject:

要想從JSON對象的特定字符串

String name = jsonObject.getString("name"); 

獲取特定INT

int id = jsonObject.getInt("id"); 

爲了得到一個特定的陣列

JSONArray jArray = jsonObject.getJSONArray("listMessages"); 

從數組

JSONObject msg = jArray.getJSONObject(1); 
int id_message = msg.getInt("id_message"); 
+0

謝謝你的回答,先生。你能否也請看看這些問題? http://stackoverflow.com/questions/16441330/declaring-mime-type-for-a-custom-file-that-is-to-be-sent-via-bluetooth和http://stackoverflow.com/questions/ 16413498 /藍牙文件 - 不發送錯誤 – neerajDorle 2013-05-10 12:13:01