SAS Application 배포 중
Java NonWritableChannelException 발생원인 - RefCntManager getFileChannel 로직이
File 존재 시 StandardOpenOption.READ 로 open,
File 존재하지 않을 시 StandardOpenOption WRITE 로 open 하기 때문.
FileChannel.open 시 StandardOpenOption 의 option 여러개를 줄 수 있음
옵션을 여러 개 지정했을 때의 우선순위는 옵션들이 서로 어떻게 조합되는지에 따라 다름
일반적으로, FileChannel에서는 제공된 모든 옵션을 고려하여 파일을 여는데, 일부 옵션 조합은 서로 충돌할 수 있으며 이러한 경우 IllegalArgumentException이 발생 가능
예를 들어
READ
와 WRITE
는 함께 사용할 수 있으며, 이 경우 파일은 읽기 및 쓰기 모두 가능APPEND
와 TRUNCATE_EXISTING
은 서로 충돌. 둘 다 WRITE와 함께 사용될 수 있지만, 동시에 사용 불가CREATE_NEW
& CREATE
SYNC
& DSYNC
파일을 안전하게 쓰고 싶다면 WRITE
, SYNC
를 같이 사용
파일의 기존 내용을 유지하면서 새 데이터를 추가하고 싶다면 WRITE
, APPEND
를 함께 사용