Java 连续写入文件的最佳方式(每秒50次)
我正在构建一个Android应用程序,它将加速度计和陀螺仪数据记录到一个文本文件中。在大多数教程中,他们使用的方法包括创建两个文本文件,并每秒打开和关闭50次。即:Java 连续写入文件的最佳方式(每秒50次),java,android,fileoutputstream,Java,Android,Fileoutputstream,我正在构建一个Android应用程序,它将加速度计和陀螺仪数据记录到一个文本文件中。在大多数教程中,他们使用的方法包括创建两个文本文件,并每秒打开和关闭50次。即: private static void writeToFile(File file, String data) { FileOutputStream stream = null; try { stream = new FileOutputStream(file, true); s
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毫秒后再次打开
这一切似乎都很好,我只是想知道是否有更好的方法来做这件事?我尝试了一些更改,使用布尔标志表示流是否已打开,如果标志设置为true,则使用另一个writeToFile,但显然fileOutputStream有时会在20毫秒的时间内自行关闭,应用程序会崩溃
所以我想我的问题是:打开、写入和关闭一个文件这么多次需要多少系统资源?这很好,不是我应该担心的事情,还是有更好的方式做事情?请记住,连续的传感器记录已经对电池寿命造成了损失,所以我希望尽可能高效地完成工作
谢谢,这不是一个好办法。更好的方法是创建一次FileOutputStream,将其另存为任何类的实例成员,然后向其写入(可能偶尔调用flush以确保写入磁盘)。这不是一种好方法。更好的方法是创建一次FileOutputStream,将其保存为任何类的实例成员,然后写入(可能偶尔调用flush以确保它写入磁盘)。
FileOutputStream
不缓冲,因此不需要刷新,但他应该使用缓冲的东西,即,它周围有一个缓冲输出流
。让它自己冲洗。谢谢,感谢你的信息FileOutputStream
不缓冲,因此不需要刷新,但他应该使用缓冲的东西,即在其周围使用BufferedOutputStream
。让它自己冲洗。谢谢,感谢你的信息!