【发布时间】:2016-07-05 14:44:50
【问题描述】:
我的应用程序正在将数据写入 txt 文件。 (代码前段时间在这里有另一个原因)
我总是将整个文件读入一个字符串数组并替换一个明确的行。
阅读文件后,我记录数据以观察它。我的主要是调用应用程序 7 次(每行),但在第一次调用后,数据即时记录只是奇怪的。
这是我的代码:
public void writeFileData(String data, int line) {
String[] lines = new String[999];
File file = null;
BufferedReader br = null;
FileOutputStream fos = null;
OutputStreamWriter os = null;
try {
file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "data.txt");
if(!file.exists())
{
try
{
if(file.createNewFile())
{
Toast.makeText(BaseActivity.this, "File was created", Toast.LENGTH_LONG).show();
}
}
catch(Exception ex)
{
Log.e("Error creating file", ex.getMessage());
}
}
br = new BufferedReader(new FileReader(file));
int i = 0;
while(i < 7)
{
buffer = br.readLine();
lines[i] = buffer;
i++;
}
br.close();
fos = new FileOutputStream(file, false);
lines[line] = data;
for(i = 0; i < 7; i++)
{
if (lines[i].isEmpty())
{
Log.e(TAG, i + "is empty");
}
else
{
Log.e(TAG, lines[i]);
}
}
for(i = 0; i < 7; i++)
{
try {
fos.write(lines[0].getBytes());
}
catch (Exception ex)
{
Log.e("Error writing", ex.getMessage());
}
}
try
{
fos.close();
}
catch(Exception ex)
{
Log.e("Error closing/flushing", ex.getMessage());
}
}
catch(Exception ex)
{
Log.e("Error creating streams", ex.getMessage());
}
}
main 中的调用如下所示:
writeFullData();
writeFileData("001",0);
writeFileData("002",1);
writeFileData("110",2);
writeFileData("110",3);
writeFileData("110",4);
writeFileData("110",5);
writeFileData("110",6);
writeFullData(); 正在写入 txt 文件(在 logcat 图像中可见)
提前致谢。
泽维尔·赛林格
【问题讨论】:
-
你能发布你的txt数据吗?
-
它是空的,但正如我们在 logcat 中看到的那样,它肯定不是在阅读时。这就像我将 null 写入文件
-
在这种情况下,我猜它阅读的内容比你实际拥有的更多,将 for 更改为 4,检查它打印的内容,然后更改为 5,依此类推。
-
是的,可能是这样,我会尝试并编辑以防它无法正常工作。谢谢
-
好的,我想我知道是什么问题。在第二次通话后阅读时,我的阅读器不是从第 1 行开始。我该如何改变呢?
标签: android file filereader filewriter