在文本文件中追加数据在Android应用程序中不起作用

时间:2014-01-15 15:19:58

标签: java android file gps text-files

我正在使用以下代码附加GPS获得的新位置数据,每次位置更改。

if (isExternalStorageWritable()) {
    if (myFile.exists()) {
        try {
            FileOutputStream fOut = new FileOutputStream(myFile);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(location.getLatitude()+", "+location.getLongitude()+", "+nodeCounter+"\n");
            myOutWriter.close();
            fOut.close();
            nodeCounter++;
        } catch (Exception e) {

        }
    } else {
        try {
            myFile.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}else
{
    Log.i("logGPSData","Error");
}

问题是附加不起作用,因为每次插入新行时,前一行都会被覆盖,所以我的文件总是包含一行,即使我收集了很多gps数据。

1 个答案:

答案 0 :(得分:4)

第二个参数表示文本是否应附加到现有文件,更改代码中的以下行:

FileOutputStream fOut = new FileOutputStream(myFile);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);

为:

FileOutputStream fOut = new FileOutputStream(myFile,true);
OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut,true);

From the Docs:

public FileOutputStream(String name,boolean append)
                 throws FileNotFoundException

创建文件输出流以写入具有指定名称的文件。如果第二个参数为true,则字节将写入文件的末尾而不是开头。创建一个新的FileDescriptor对象来表示此文件连接。 首先,如果有安全管理器,则调用其checkWrite方法,并将name作为其参数。

如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开,则抛出FileNotFoundException。

参数:

1)name - 系统相关的文件名

2)append - 如果为true,那么字节将被写入文件的末尾而不是开头

抛出:

1)FileNotFoundException - 如果文件存在但是是目录而不是常规文件,则不存在但无法创建,或者由于任何其他原因无法打开。

2)SecurityException - 如果存在安全管理器且其checkWrite方法拒绝对该文件的写访问。

时间:

JDK1.1