0
我試圖將一些數據寫入內部存儲。問題在於我閱讀它時。它不會讀取任何內容。 Logcat說它在裏面寫了一些東西。但是當我讀到它時,Log貓說它是空的。這是我的文件管理器:android:內部文件讀取
public class FileManager {
File dir;
File driveFile;
BufferedWriter writer=null;
BufferedReader reader=null;
public FileManager(Context context,String name){
dir = new File(context.getFilesDir(),"drives");
dir.mkdirs();
driveFile = new File(dir,name+".txt");
Log.d("FileManager",driveFile.getAbsolutePath());
}
public void open() throws IOException{
writer = new BufferedWriter(new FileWriter(driveFile));
reader = new BufferedReader(new FileReader(driveFile));
}
public void close() throws IOException{
writer.close();
reader.close();
}
public boolean writeTrackPoints(Drive drive){
TrackPoint [] trackPoints=drive.getTrackPoints();
Log.d("FileManager", "writing....");
for(int i=0;i<trackPoints.length;i++){
try {
String line = trackPoints[i].getParsingString()+"\r\n";
writer.write(line);
writer.flush();
Log.d("FileManager", "Writing" + line);
} catch (IOException e) {
return false;
}
}
return true;
}
public boolean readTrackPoints(Drive drive){
String line=null;
Log.d("FileManager", "reading....");
try {
while((line = reader.readLine())!=null){
Log.d("FileManager", "Reading: "+line);
drive.addTrackPoint(new TrackPoint(line));
}
} catch (IOException e) {
Log.d("FileManager", e.getMessage());
return false;
}
return true;
}
}
我無法檢查文件是否爲空,因爲我的設備沒有根。我意識到它不會在閱讀時進入細胞。是不是一次打開兩個流的問題?
通過BufferedReader/BufferedWriter不可能做到讀寫同時進行。要麼爲每個訪問新實例,打開和關閉文件,要麼使用其他機制。 –
有時候你會吞食異常,有時你只是記錄消息而不是完整的堆棧跟蹤。在這兩種情況下,當你要讓調用者這樣做時,你都會捕獲異常 - 你的IO方法應該聲明他們拋出了'IOException',而不是*嘗試處理異常。 –
Joop Eggen:我在寫作時創建新實例,然後關閉它創建新的實例以供閱讀。 – SpeedEX505