我正在使用saveData();
方法将字符串写入文件public void saveData(){
String fileName = "lifeClockSavedData";
String birthYear = "1986";
try {
FileOutputStream fileOutputStream = openFileOutput(fileName, MODE_PRIVATE);
fileOutputStream.write(birthYear.getBytes());
fileOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
使用retrieve();
在小部件活动中打开它String messageString;
public void retrieve(Context context){
String fileName = "lifeClockSavedData";
try {
String message;
FileInputStream fileInputStream = context.getApplicationContext().openFileInput(fileName);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuffer stringBuffer = new StringBuffer();
while ((message = bufferedReader.readLine())!=null);{stringBuffer.append(message);}
messageString = stringBuffer.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
据我所知,这应该将messageString设置为“1986”,但值始终为“null”。
我很欣赏指出哪些是错的。
编辑:此问题与context.openFileInput() returning null when trying to access a stored file
不重复因为我没有尝试让openFileInput()接受路径
答案 0 :(得分:0)
我正在将一个字符串写入文件
不,你不是。您正在将字节写入文件。
或者:
在文件中写一个字符串(例如,通过PrintWriter
包裹的OutputStreamWriter
)或
从文件中读取字节,然后从这些字节构造String
答案 1 :(得分:0)
报废:
while ((message = bufferedReader.readLine())!=null);{stringBuffer.append(message);}
替换为:
stringBuffer.append(bufferedReader.readLine());
不知道为什么会有效,因为bufferedReader.readline()并不是空的。