如果我在保存之间读取消息,FileOutputStream 只会将消息写入文件
FileOutputStream only writes the message into the file if I read it between saves
我正在尝试编写一个文件 read/write class 我为此做了一个示例 activity,其中包含一个用于保存到我创建的文件的按钮,一个用于读取的按钮从文件中,和一个 textView 来读取内容。我尝试了一些测试用例来查看我的 FileRW 是否工作,如果我在每条消息后读取文件它工作正常但是如果我尝试将多条消息保存到文件而不在连续尝试之间读取,只有最新的消息被写入文件.我不知道是什么导致了这种行为。
感谢所有帮助。
file = new File(getFilesDir() + "CheckFile.txt");
save.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
FileOutputStream fos = new FileOutputStream(file);
fos.write(text.getText().toString().getBytes());
fos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
read.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null)
{
textString.append(line);
textString.append('\n');
}
br.close();
Log.i("Ranai text", textString+"");
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
使用
FileOutputStream fos = new FileOutputStream(file, true);
您想追加到文件末尾而不是写入开头
默认情况下,FileOutputStream 将在您写入输出文件时覆盖其内容。通过将构造函数的第二个参数作为 true
传递,您可以告诉 FileOutputStream 附加到文件的现有内容而不是覆盖。
FileOutputStream fos = new FileOutputStream(file, true);
我正在尝试编写一个文件 read/write class 我为此做了一个示例 activity,其中包含一个用于保存到我创建的文件的按钮,一个用于读取的按钮从文件中,和一个 textView 来读取内容。我尝试了一些测试用例来查看我的 FileRW 是否工作,如果我在每条消息后读取文件它工作正常但是如果我尝试将多条消息保存到文件而不在连续尝试之间读取,只有最新的消息被写入文件.我不知道是什么导致了这种行为。
感谢所有帮助。
file = new File(getFilesDir() + "CheckFile.txt");
save.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
FileOutputStream fos = new FileOutputStream(file);
fos.write(text.getText().toString().getBytes());
fos.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
read.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null)
{
textString.append(line);
textString.append('\n');
}
br.close();
Log.i("Ranai text", textString+"");
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
使用
FileOutputStream fos = new FileOutputStream(file, true);
您想追加到文件末尾而不是写入开头
默认情况下,FileOutputStream 将在您写入输出文件时覆盖其内容。通过将构造函数的第二个参数作为 true
传递,您可以告诉 FileOutputStream 附加到文件的现有内容而不是覆盖。
FileOutputStream fos = new FileOutputStream(file, true);