2012-06-02 40 views

回答

7

是的,你可以從內部存儲讀取文件。

寫入文件,你可以使用這個

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

讀取文件使用以下:

來讀取內部存儲的文件中:

呼叫openFileInput()並傳遞給它的名字要讀取的文件。這將返回一個FileInputStream。從文件中讀取字節read()。然後用close()關閉流。

代碼:

StringBuilder sb = new StringBuilder(); 
try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line).append("\n"); 
     } 
     is.close(); 
    } catch(OutOfMemoryError om) { 
     om.printStackTrace(); 
    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
    String result = sb.toString(); 

請參閱本link

+0

您好,我有一個圖像文件我怎樣才能得到這個文件,你的情況*結果*是'字符串' –

6

它可以寫入和讀取內部存儲的文本文件。在內部存儲的情況下,不需要直接創建文件。使用FileOutputStream寫入文件。 FileOutputStream會自動在內部存儲器中創建文件。無需提供任何路徑,只需提供文件名即可。現在閱讀文件使用FileInputStream。它會自動從內部存儲器讀取文件。下面我提供了讀取和寫入文件的代碼。

代碼寫入文件

String FILENAME ="textFile.txt"; 
String strMsgToSave = "VIVEKANAND"; 
FileOutputStream fos; 
try 
{ 
    fos = context.openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    try 
    { 
     fos.write(strMsgToSave.getBytes()); 
     fos.close(); 

    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 

} 
catch (FileNotFoundException e) 
{ 
    e.printStackTrace(); 
} 

}

代碼來讀取文件

int ch; 
StringBuffer fileContent = new StringBuffer(""); 
FileInputStream fis; 
try { 
    fis = context.openFileInput(FILENAME); 
    try { 
     while((ch = fis.read()) != -1) 
      fileContent.append((char)ch); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

String data = new String(fileContent); 
+0

是好的,因爲沒有這個環境就可以讀取不相關的數據。所以必須使用Context context = getApplicationContext();在調用openFileInput或openFileOutput之前。 –