连续写入文件的最佳方式(每秒50次)

时间:2017-10-13 00:05:04

标签: java android fileoutputstream

我正在构建一个Android应用程序,它将Accelerometer和Gyroscope数据记录到文本文件中。在大多数教程中,他们使用的方法包括创建两个文本文件,每秒打开和关闭它们50次。即:

private static void writeToFile(File file, String data) {

    FileOutputStream stream = null;

    try {

        stream = new FileOutputStream(file, true);
        stream.write(data.getBytes());
    } catch (FileNotFoundException e) {
        Log.e("History", "In catch");
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();

    try {

        stream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

即,在每个SensorEvent上,您打开文件,写入值,然后关闭文件,然后在20毫秒后再次打开它。

这一切似乎都运转良好,我只是想知道是否有更好的方法去做呢?我尝试使用布尔标志进行一些更改来说明流是否已经打开,然后使用另一个writeToFile if flag设置为true,但很明显fileOutputStream有时可以在20毫秒的时间范围内自行关闭,并且应用程序崩溃

所以我想我的问题是:多少次打开,写入和关闭文件需要多少系统资源?这样很好,而不是我应该担心的事情,还是有更好的做事方式?请记住,连续的传感器记录已经对电池寿命造成了影响,因此我希望尽可能高效地完成工作。

由于

1 个答案:

答案 0 :(得分:2)

这不是一个好方法。更好的方法是创建一次FileOutputStream,将其保存为任何类的实例成员,然后写入它(可能偶尔调用flush以确保它写入磁盘)。