写入文件并读取它以将内容保存到像String这样的变量中

时间:2013-05-10 23:34:30

标签: android

首先,我到处寻找答案,但我没有找到。 非常感谢您的回答。 实际上,我尝试写入一个文件。然后,我尝试将内容保存到StringBuffer中。最后我尝试通过TextView显示它,但它没有显示任何内容!

公共类MainActivity扩展了Activity {

String finall;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String FILENAME = "hello_file";
    String string = "hello world!";

    FileOutputStream fos;
    try
    {
        fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
        fos.write(string.getBytes());
        fos.close();
    } 
    catch (FileNotFoundException e) { e.printStackTrace(); } 
    catch (IOException e) { e.printStackTrace(); }



    FileInputStream in = null;
    try
    {
        in = openFileInput("hello_file.txt");
        StringBuffer fileContent = new StringBuffer("");

        byte[] buffer = new byte[1024];

        while(in.read(buffer) != -1)
        {
            fileContent.append(new String(buffer));
        }
        finall = fileContent.toString();
    }
    catch (FileNotFoundException e) { e.printStackTrace(); } 
    catch (IOException e) { e.printStackTrace(); }

    TextView text = (TextView)findViewById(R.id.mehmet);
    text.setText(finall);
}

}

2 个答案:

答案 0 :(得分:1)

尝试在完成读取后关闭FileInputStream,就像使用FileOutputStream一样。这使数据得以刷新。

答案 1 :(得分:0)

如@Piovezan所说,你应该关闭你的文件,但你也应该考虑in.read(缓冲区)返回的预期值可能不等于buffer.length

所以你最后可能会有一些脏值。我不知道这是不是你的情况但StringBuffer是线程安全的,所以如果你不在应用程序的多线程部分工作,你可以切换到StringBuilder以获得更好的性能和更少的开销