首先,我到处寻找答案,但我没有找到。 非常感谢您的回答。 实际上,我尝试写入一个文件。然后,我尝试将内容保存到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);
}
}
答案 0 :(得分:1)
尝试在完成读取后关闭FileInputStream,就像使用FileOutputStream一样。这使数据得以刷新。
答案 1 :(得分:0)
如@Piovezan所说,你应该关闭你的文件,但你也应该考虑in.read(缓冲区)返回的预期值可能不等于buffer.length
所以你最后可能会有一些脏值。我不知道这是不是你的情况但StringBuffer是线程安全的,所以如果你不在应用程序的多线程部分工作,你可以切换到StringBuilder以获得更好的性能和更少的开销