我正在构建一个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毫秒的时间范围内自行关闭,并且应用程序崩溃
所以我想我的问题是:多少次打开,写入和关闭文件需要多少系统资源?这样很好,而不是我应该担心的事情,还是有更好的做事方式?请记住,连续的传感器记录已经对电池寿命造成了影响,因此我希望尽可能高效地完成工作。
由于
答案 0 :(得分:2)
这不是一个好方法。更好的方法是创建一次FileOutputStream,将其保存为任何类的实例成员,然后写入它(可能偶尔调用flush以确保它写入磁盘)。