나는 Accelerometer 및 Gyroscope 데이터를 텍스트 파일에 기록하는 Android 앱을 제작 중입니다. 대부분의 자습서에서는 두 개의 텍스트 파일을 만들고 초당 50 번씩 열거 나 닫는 방법을 사용합니다. 예 :파일에 계속해서 쓰는 가장 좋은 방법 (초당 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 플래그가 true로 설정되어 있지만 fileOutputStream이 20 밀리 초 시간 프레임에서 자체를 닫을 수 있으며 앱이 다운되는 경우가 있습니다. .
그래서 내 질문에 : 여러 번 파일을 열고, 쓰고 닫으려면 시스템 리소스가 얼마나 필요합니까? 괜찮습니까? 내가 걱정해야 할 것이 아니며, 일을하는 더 좋은 방법이 있습니까? 지속적인 센서 로깅은 이미 배터리 수명에 영향을 미치므로 가능한 한 효율적으로 작업하고 싶습니다.
감사합니다.
'FileOutputStream'은 버퍼링하지 않으므로 플러시가 필요하지 않지만 버퍼를 처리하는 무언가, 즉 그 주위에'BufferedOutputStream'을 사용해야합니다. 그리고 스스로 플러시하자. – EJP
감사합니다. 정보를 제공해주세요. –