2016-08-29 4 views
2
하나

POI 파일 타임 스탬프

wb.close(); 

에 변경 사항이없는 경우에도, 다음 전화를

Workbook wb = WorkbookFactory.create(myFile); 

를 사용하여 Excel 파일을 열 ...하지만 할 수있는 표시

를 업데이트하지 않고 파일을 읽을 ... 자원을 해제하면 파일 시스템의 파일이 업데이트됩니다 (최소한 타임 스탬프는 아무것도 표시되지 않습니다).

  • 내가 열려면 : 나는이 문제를 발견하는 유일한 방법은 내가 할 노력하고있어하면 다음과 같다 통합 문서 작성

    Workbook wb = WorkbookFactory.create(myFile, true); 
    

    에 "읽기 전용"되도록 지정하는 것입니다 파일에서 기존 통합 문서;

  • 즉시 파일 시스템 리소스를 해제하고 메모리에 통합 문서를 유지합니다. (원본 파일의 타임 스탬프를 업데이트해서는 안 됨).
  • 메모리 내 통합 문서를 변경하십시오.
  • 수정 된 통합 문서를 새 파일로 저장하십시오.

이것은 가능합니까? 나는 많은 것들을 시도했지만 그것을 작동시키지 못합니다. 원본 파일 타임 스탬프를 업데이트하지 않으려면 통합 문서를 읽기 전용으로 열어야합니다. 그러나 나는 새 파일에 대한 후속 쓰기를 위해 메모리에서 수정할 수 없습니다. Catch-22.

[BTW, 스트림보다 파일에서 통합 문서를 만드는 중입니다. 더 효율적이라고 생각하기 때문에. 스트림을 사용하면 스트림을 직접 닫아이 문제를 해결할 수 있습니다. 또한 XLSX가 아닌 XLSX/XLSM을 사용하고 있습니다.]

생각 하시겠습니까? 감사!

+0

[다양한 읽기 및 쓰기 방법에 대한 Apache POI FAQ 읽기 (http://poi.apache.org/faq.html#faq- N1023C)? '.xlsx'보다는'.xls'로 작업 할 수 있습니까? (현재 전 3.15 베타 2/3.15 최종 버전에서 새로운 파일에 대한 쓰기 및 쓰기 기능이 더 잘 개발되었습니다.) – Gagravarr

+0

정보 및 제안에 감사드립니다. 불행히도, 나는 주로 XLSX를 사용하여 잠겨 있습니다. – Gurtz

답변

1

옵션이 될 수 :

  1. 는 읽기 전용으로, 다음 쓰기 복사본을 생성을 파일의 사본을 작성하고 사본
  2. 열기 원본 파일에 읽기/쓰기가 필요한 경우
  3. 원본 파일의 입력 스트림을 사용하여 통합 문서 만들기
+0

좋은 생각. 문제는 파일을 읽은 후에 후속 쓰기가 필요한지 여부 만 알 수 있습니다. (사용자 결정입니다.) 따라서 파일을 읽고 리소스를 릴리스 한 다음 필요에 따라 나중에 새 파일을 만들고 싶습니다. 제안 해 주셔서 감사합니다. – Gurtz

+1

파일을 만들고 삭제하고 싶지 않은 경우 (수정이 필요하지 않은 경우) 읽기 전용 모드로 파일을 열어야 할 수 있으며 수정이 필요한 경우 복사본을 만든 다음 다시 엽니 다. 수정을위한 사본. – rohitvats

+0

오, 좋아, 나는 그것을 피하기를 바랬다. (파일을 여는 데 드는 비용 때문에 상당히 클 수있다.) 감사. – Gurtz