我正在逐步调试以下代码片段,它不会创建或读取文件,因为它应该也不会抛出任何重复。它存在于我的应用程序的主要活动中。这些代码行有什么问题?
public void onClick(View v) {
try {
FileOutputStream outputStream = openFileOutput("test.txt", Context.MODE_PRIVATE);
try {
outputStream.write("this is a text".getBytes());
outputStream.close();
FileInputStream inputStream = openFileInput("test.txt");
String string = new String();
inputStream.read(string.getBytes());
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_LONG).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
答案 0 :(得分:0)
String string = new String();
inputStream.read(string.getBytes());
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_LONG).show();
您似乎正在尝试将数据直接读入字符串。你不能这样做。字符串在Java中是不可变的。当您在字符串上调用getBytes()时,您没有获得其内部缓冲区,而是获得了其数据的副本。
相反,您应该读入一个全新的缓冲区,直到inputStream没有更多数据,将其转换为字符串,并显示它。