Android-删除.txt文件中最后一行不完整的内容
该应用程序记录传感器数据,并将数据写入.txt文件到手机SD卡中 在数据采集过程中,可以随时按下停止按钮停止写入 相关写作部分如下:Android-删除.txt文件中最后一行不完整的内容,android,Android,该应用程序记录传感器数据,并将数据写入.txt文件到手机SD卡中 在数据采集过程中,可以随时按下停止按钮停止写入 相关写作部分如下: myFile = new File("/sdcard/ResearchData/" + txtData.getText() + ".txt"); myFile.createNewFile(); fOut = new Fi
myFile = new File("/sdcard/ResearchData/"
+ txtData.getText() + ".txt");
myFile.createNewFile();
fOut = new FileOutputStream(myFile);
myOutWriter = new OutputStreamWriter(fOut);
myBufferedWriter = new BufferedWriter(myOutWriter);
myPrintWriter = new PrintWriter(myBufferedWriter);
myPrintWriter.write(currentTime - startTime + " " + acceleration[0]
+ " " + acceleration[1] + " " + acceleration[2] + "\n");
按下停止按钮后,将执行以下代码
myOutWriter.close();
fOut.close();
代码运行正常,但唯一的问题是,因为随时可能按STOP,所以.txt文件的最后一行总是不完整的。由于数据分析的需要,我需要的数据是一个很好的矩形矩阵。因此,我需要删除最后一行不完整的内容。我可以怎么做?
或者从另一个角度来解决这个问题。我可以使停止按钮与写入过程同步吗?i、 例如,在一行完全写入后,检查停止。您可以尝试设置一个布尔标志,如
isStopped
,以指示按下了停止按钮。
按下停止按钮时,将isStopped
标志设置为true。
在文件写入部分,检查
isStopped
标志。如果为true,则退出循环并关闭文件。否则,代码可以继续向文件中写入行。您需要一个bool
类型的变量,该变量最初为false
,我们称之为isStopPressed
在按钮的关闭事件中,您应该将其指定为true
我假设您在top函数中创建了文件,并在onSensorChanged()
函数中修改了此文件
那么这行之后,
myPrintWriter.write(currentTime - startTime + " " + acceleration[0]
+ " " + acceleration[1] + " " + acceleration[2] + "\n");
你需要一个条件,比如
if(isStopPressed) {
mSensorManager.unregisterListener([Your Sensor Listener]);
myOutWriter.close();
fOut.close();
}
这将为您的需求提供最全面、有效的时间间隔。是的,您的假设在我的情况下都是有效的。所以您的想法是:一旦按下停止按钮,就关闭所有传感器,这样就不会调用onSensorChanged()方法了?这是否可以确保最后一行数据已完全写入?是,因为您在写入最后一行后取消注册传感器侦听器并关闭文件。否。不工作。你所说的正是我所做的。没错,它应该可以工作,但不知何故,编写过程仍然会被中断。您能否尝试添加
myOutWriter.flush()
beforemyOutWriter.close()代码>并查看是否有帮助?