우리는 어떻게 쓰는 바이트 배열 파일에(그리고 그것을 읽고 뒤에서는 파일)에서 Java?
예,우리는 모두 알고 있 이미 많은 질문들이 있지만,그들은 아주 지저분하고 주관적 사실에는 많은 방법이있다 이것을 달성하는 작업입니다.
그래서 그의 범위를 줄이는 질문:
도메인:
- 안드로이드/자바
우리가 무엇을 원하는:
- 빨리(가능)
- 버그-무료(에서 엄격하게 세심한 방법)
우리가 무엇을 하지 않기:
- 타사 라이브러리
- 어떤 라이브러리를 필요로 하는 안드로이드 API 에 보다 나중 23 일(멜로)
(그래서,는 Apache Commons, 구글은 구아바, Java.nio,그리고 나뭇잎이 우리와 함께 좋은 ol'Java.io)
우리에게 무엇이 필요:
- 바이트 배열은 항상 정확히 동일한(내용과 크기)를 통과 한 후 write--다음 읽기 프로세스
- 쓰 방법만을 필요로는 두 개의 인수:파일의 파일 byte[]data
- 읽는 방법을 반환 byte[]고 필요 인수는 파일을 파일
내 특정한 경우에,이 방법은 프라이빗(아 라이브러리)에 대해 책임지지 않습 다음,(하지만 당신이 원하는 경우를 만들기 더 보편적인 솔루션에 적용되는 넓은 관객이,그것을 위해 갈):
- 스레드에 안전(파일에 접근할 수 없는 하나 이상의 과정에서 한 번)
- 파일 null
- 파일을 가리키는 존재하지 않 위치
- 부족의 권한에서 파일 위치
- 바이트 배열되고 너무 크
- 바이트 배열되는 null
- 을 다루는 모든"인덱스,""길"또는"append"인수/기능
그래서 우리의 종류에서의 검색 결정적인 방탄 코드는 사람들이 미래에 있다고 가정 사용하는 것이 안전하기 때문에 응답의 최대 투표 없는지 의견을 말하고,"는 충돌할 수 있습니다면..."
이것은 내가 지금까지:
쓰 바이트 파일:
private void writeBytesToFile(final File file, final byte[] data) {
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
}
읽 바이트에서 파일
private byte[] readBytesFromFile(final File file) {
RandomAccessFile raf;
byte[] bytesToReturn = new byte[(int) file.length()];
try {
raf = new RandomAccessFile(file, "r");
raf.readFully(bytesToReturn);
} catch (Exception e) {
Log.i("XXX", "BUG: " + e);
}
return bytesToReturn;
}
내가 읽고,예외가 있다:
FileNotFoundException:내가 올바른 이 발생하지 않아야 한 파일 경로 공급되고 있는 파생되었 안드로이드를 사용하여 자신의 내부 도구 및/또는 응용 프로그램을 테스트를 제대로?
IOException:지 않아요 정말 무엇이 원인일 수 있습니다...그러나 나는 가정하면 주위에 방법이 있다면 그것은 않습니다.
그래서 그 마음에 할 수 있습니다 이러한 방법을 개선되거나 대체,그렇다면,무엇을?