January 11th, 2007
Java에서 OS의 File Lock 쌩까기
C:\Temp\lock.xls 라는 파일을 만들고 Excel로 연다.
엑셀을 포함한 대부분의 Editor(non viewer)는 File에 대한 Lock(Exclusive Lock)을 유지한다.
하지만 Memory Mapped File I/O를 쓰면 아무 문제없이 수정할 수 있다.
자바도 1.4부터는 nio가 들어가면서 Memory Mapped File I/O를 지원하기 때문에 얼마든지 말아먹을 수 있다.
JAVA:
-
FileChannel ch = raf.getChannel();
-
MappedByteBuffer mbuf = ch.map(MapMode.READ_WRITE, 0, ch.size());
-
mbuf.put("Hello".getBytes());
-
raf.close();
-
}
이를 실행시키고 Excel을 닫은 뒤 다시 열면 깨진파일이라 나온다.
짤방은 수상한(?) 이영아 입니다.

P.S) 이 문제를 찾는데 도움을 준 Chan 씨 블로그도 종종 들러주삼 ^^