2013-05-04 75 views
0

我搜索了幾天,我發現所有使用bufferedReader從內部存儲上的文件讀取。是不是可以使用InputStream從內部存儲上的文件讀取?使用InputStream從內部存儲讀取文件

private void dailyInput() 
{  
    InputStream in; 
    in = this.getAsset().open("file.txt"); 
    Scanner input = new Scanner(new InputStreamReader(in)); 
    in.close(); 
} 

我現在使用這個與input.next()來搜索我的文件,我需要的數據。它一切正常,但我想將新文件保存到內部存儲並從它們讀取,而無需將所有內容都更改爲bufferedReader。這是可能的還是我需要咬下子彈並改變一切?僅供參考,我不需要寫,只能閱讀。

回答

-1

寫入文件。

String FILENAME = "file.txt"; 
String string = "hello world!"; 

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

閱讀

void OpenFileDialog(String file) { 

    //Read file in Internal Storage 
    FileInputStream fis; 
    String content = ""; 
    try { 
     fis = openFileInput(file); 
     byte[] input = new byte[fis.available()]; 
     while (fis.read(input) != -1) { 
     } 
     content += new String(input); 
    } 
    catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

content將包含您的文件數據。

+0

要訪問設備的內部存儲上的文件,我需要設置文件名字符串file.txt的所有設備上的路徑?另外,fis.read();只能讀入int? – cfitzer 2013-05-04 16:28:19

+0

fis.read()只能讀入一個int。此外,我得到一個運行時錯誤使用這種方法(可能做錯了路徑)。我正在使用掃描儀在文檔中搜索我需要的數據。這允許我一次讀取一個字符串。是否可以將Scanner與內部存儲器中的文件一起使用? – cfitzer 2013-05-04 17:03:17

+0

k。我正在編輯我的答案,看看它 – Ayush 2013-05-04 17:07:13

0

當您面臨從內部存儲器中的子文件夾讀取文件的情況時,您可以嘗試使用以下代碼。有時你可能會遇到openFileInput問題,你試圖傳遞上下文。 這裏是功能。

public String getDataFromFile(File file){ 
    StringBuilder data= new StringBuilder(); 
    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String singleLine; 
     while ((singleLine= br.readLine()) != null) { 
      data.append(singleLine); 
      data.append('\n'); 
     } 
     br.close(); 
     return data.toString(); 
    } 
    catch (IOException e) { 
     return ""+e; 
    } 
}