2013-07-11 83 views
-3

我正在嘗試製作應用程序,而且我需要保存字符串,就像AppInventor中的TinyDB一樣。所以,我發現有http://developer.android.com/guide/topics/data/data-storage.html#filesInternal,我正在尋找的是將數據保存到內部存儲,但我不知道如何讀取它。他們說:Android - 讀取內部數據

來讀取內部存儲文件:

  1. 呼叫openFileInput(),並通過它的文件的名稱改爲。這會返回一個FileInputStream。

  2. 使用read()從文件中讀取字節。

  3. 然後關閉與關閉()流

但我不知道怎麼回事,我的代碼永遠不會奏效。所以我搜索瞭如何從內部存儲讀取,沒有代碼工作。你能告訴我,如何從內部存儲讀取文本? :)

這是代碼:

EditText tagbox = (EditText)findViewById(R.id.editText1); 
    String tag = tagbox.toString(); 
    Context context = getApplicationContext(); 


    FileInputStream fis = context.openFileInput(tag); 
    InputStreamReader in = new InputStreamReader(fis); 
    BufferedReader br = new BufferedReader(in); 
    String data = br.readLine(); 

     Toast.makeText(getApplicationContext(), data, Toast.LENGTH_LONG).show(); 

好了,我找到了解決辦法。最簡單的方法來存儲數據,如TinyDB在AppInventor,使用SharedPreferences:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

Edtior editor = preferences.edit(); 

要存儲數據:

editor.putString("key", "value"); 

讀取數據:

String value = preferences.getString("key"); 
+0

發佈您的代碼,所以我們可以幫助你 - 但我們不打算編寫你的代碼。 –

+0

好的,代碼在那裏 – StfgMccx

回答

0

好,所以我找到了解決方案。到數據,如TinyDB存儲在AppInventor最簡單的方法,是使用SharedPreferences:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

Edtior editor = preferences.edit(); 

要存儲數據:

editor.putString("key", "value"); 

讀取數據:

String value = preferences.getString("key"); 
0
 File selectedFile = new File(path + "/" + selectedFromList + ".txt"); 

     FileInputStream fstream = null; 
     ArrayList sal = new ArrayList(); 
     try { 
      fstream = new FileInputStream(selectedFile); 

      BufferedReader br = new BufferedReader(new InputStreamReader(fstream)); 
      String strLine; 
      //Read File Line By Line 

      while ((strLine = br.readLine()) != null) { 
       // Print the content on the console 
       sal.add(strLine); 
       } 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
      //Close the input stream 
      try { 
      in.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

如何將其轉換爲字符串?我用:String note = sal.toString();它崩潰了,是不是轉換錯了? – StfgMccx

+0

sal是一個數組。所以你想確定你想要使用的數組中的什麼條目。 所以你可以使用sal [0] .toString();或for(int i = 0; i PartTimeLegend

+0

Eclipse在sal [0]處給我一個錯誤,錯誤是:「表達式的類型必須是數組類型,但它解析爲ArrayList」 – StfgMccx