0

首先,我到处搜索答案,但没有找到。非常感谢您的回答。事实上,我尝试写入文件。然后,我尝试将内容保存到 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);
}

}

4

2 回答 2

1

尝试在读取完成后关闭 FileInputStream,就像对 FileOutputStream 所做的那样。这使得数据被刷新。

于 2013-05-11T00:06:03.267 回答
0

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

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

于 2013-05-11T00:20:31.480 回答