2012-08-28 75 views
5

我想寫入文件,然後從中讀取。在使用openFileOutput(..,..)方法時,我發現這個方法沒有被定義,因爲它是一個抽象方法。然後我用getBaseContext()傳遞上下文來嘗試它。並警告已關閉,但我沒有看到輸出結果。我也嘗試在構造函數中傳遞上下文作爲參數,但這也沒有幫助。我想編寫靜態方法,以便我不必每次都實例化類,靜態不是原因,因爲我也沒有嘗試過。代碼片段如下所示。將字符串寫入Android中的內部存儲器

即使在使用內部存儲器時,是否需要指定任何路徑? 是否有任何權限在內部存儲上寫入文件? (我已包含在外部存儲上寫入的權限)

public static void write (String filename,Context c,String string) throws IOException{ 
    try { 
     FileOutputStream fos = c.openFileOutput(filename, Context.MODE_PRIVATE); 
     fos.write(string.getBytes()); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


public static String read (String filename,Context c) throws IOException{ 

    StringBuffer buffer = new StringBuffer(); 

    FileInputStream fis = c.openFileInput(filename); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); 
    if (fis!=null) {        
     while ((Read = reader.readLine()) != null) {  
      buffer.append(Read + "\n"); 
     }    
    }  
    fis.close(); 
    return Read; 
} 
+2

你想在read()中返回buffer.toString()! (順便說一下,「字符串讀取」似乎在您的代碼片段中丟失,但不應該使用大寫的非靜態變量。) – Stefan

+0

那麼我該怎麼做? 代碼片段可能會有所幫助。 – Atinder

+4

返回buffer.toString()作爲read()方法的最後一行。並添加「讀取字符串」在你的while循環之前的某個地方定義「Read」變量。你應該使用小寫,例如字符串行; while((line = reader.readLine())!= null)buffer.append(line +「\ n」); – Stefan

回答

2

return read.toString()在read方法中解決了這個問題。 謝謝Stefan。

+0

很抱歉讓這條線長時間重新生活。我從'asset'文件夾中讀取一個文件,然後使用'FileOutputStream'寫入該文件。我的問題是'FileOutputStream'保存的文件路徑。 –

相關問題