openFileInput始终返回null

时间:2016-09-24 15:11:11

标签: android android-studio

我正在使用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()接受路径

2 个答案:

答案 0 :(得分:0)

  

我正在将一个字符串写入文件

不,你不是。您正在将字节写入文件。

或者:

  • 在文件中写一个字符串(例如,通过PrintWriter包裹的OutputStreamWriter)或

  • 从文件中读取字节,然后从这些字节构造String

答案 1 :(得分:0)

报废:

while ((message = bufferedReader.readLine())!=null);{stringBuffer.append(message);}

替换为:

stringBuffer.append(bufferedReader.readLine());

不知道为什么会有效,因为bufferedReader.readline()并不是空的。