QueueFile 테이프를 읽을 때 EOFException 발생
Square의 Tape 라이브러리를 사용 하여 서버에 대한 데이터 업로드를 대기열에 넣습니다.
큐는 JSON 형식의 파일에 저장됩니다. 앱이 시작되면 대기열을 초기화하고 업로드를 시작합니다 (예 : Wi-Fi에있는 경우). 그러나 사용자의 일부 장치 EOFException
에서는 'null'
메시지 가 표시됩니다 (crashlytics에 로그인 됨).
이 오류 FileObjectQueue
는 기존 파일에서 개체를 만들 때 발생합니다 . 디버그 정보 수집에서 실제 파일은 ~ 1MB입니다.
이 문제의 원인이나 예방 방법에 대한 아이디어가 있습니까? -내 java.io에 먼지를 털어 내야 할 수도 있습니다.
편집 : 테이프 v1.2.1 사용
Caused by: java.io.EOFException
at java.io.RandomAccessFile.readFully(RandomAccessFile.java:419)
at java.io.RandomAccessFile.readInt(RandomAccessFile.java:439)
at com.squareup.tape.QueueFile.readElement(:182)
at com.squareup.tape.QueueFile.readHeader(:162)
at com.squareup.tape.QueueFile.(:110)
at com.squareup.tape.FileObjectQueue.(:35)
at com.myapp.queue.MyUploadTaskQueue.create(:125)
업데이트 됨 -1.2.2로 업그레이드 한 이후에도이 오류가 표시됩니다.
Caused by: java.io.IOException: File is corrupt; length stored in header is 0.
at com.squareup.tape.QueueFile.readHeader(:165)
at com.squareup.tape.QueueFile.<init>(:117)
at com.squareup.tape.FileObjectQueue.<init>(:35)
EOFException은 파일 끝에 도달했음을 나타냅니다. 즉, 읽을 바이트가 더 이상 없습니다. 이 예외는 더 이상 읽을 것이 없다는 신호를 보내는 또 다른 방법 인 반면 다른 메서드는 -1과 같은 값을 반환합니다. 오류 스택 추적에서 볼 수 있듯이 예외를 발생시키는 메서드는 읽기 메서드입니다. java.io.RandomAccessFile.readFully(RandomAccessFile.java:419)
및 com.squareup.tape.QueueFile.readHeader(:165)
. 따라서 모든 바이트를 읽지 않는 한 (일반적으로 원하는대로) "예방"할 수 없습니다. catch(EOFException e) { /* ignore */ }
:) https://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html
참조 URL : https://stackoverflow.com/questions/22861931/eofexception-when-reading-queuefile-tape
'code' 카테고리의 다른 글
인라인 문자열 사용과 php5에서 연결의 속도 차이는 무엇입니까? (0) | 2020.12.26 |
---|---|
bower를 사용하여 리포지토리의 최신 (태그없는) 상태를 설치하는 방법은 무엇입니까? (0) | 2020.12.26 |
ElastiCache와 함께 SignalR 사용 실패 (0) | 2020.12.26 |
새로운 NSPrivateQueueConcurrencyType을 통한 핵심 데이터 백그라운드 가져 오기 (0) | 2020.12.26 |
D3 및 Shiny를 사용하여 R에서`identify ()`구현 (0) | 2020.12.26 |