압축해제 관련 오류. decmprsFile
- 작성자 :
- 임*영
- 작성일 :
- 2018-03-15 14:04:13
- 조회수 :
- 1,584
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
eGov 버전 : 3.2.0
컴프레스 버전 : commons-compress-1.12
Windows 버전 : Windows7 32bit
육군 정보체계관리단에서 개발을 하고 있습니다.
e-book형태의 파일을 업로드해야하는데 이게 단일 파일이 아니라,
index.html과 몇개의 폴더로 구성되어있습니다.
그래서 파일을 모두 압축해서 서버에 올리고 압축 해제 후 e-book을 볼 수 있게 하려고 합니다.
문제는 압축을 해제하는 부분에서 오류가 납니다.
반디집 프로그램을 사용해서 .zip으로 압축 후에 서버에 올리고 압축 해제를 시키면
java.io.IOException: 지정된 경로를 찾을 수 없습니다.
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1006)
at egovframework.com.utl.sim.service.EgovFileTool.createNewFile(EgovFileTool.java:899)
at ...
이런 오류가 발생합니다.
오류 발생과 함께 압축해제 하고자 하는 폴더가 생기고 그 폴더 안을 보면 압축해제 실패한 파일 하나만 남아 있습니다.
이상한 점은 반디집으로 압축하지 않고 EgovFileCmprs.cmprsFile을 이용해서 압축을 하면 압축해제가 정상적으로 잘 됩니다.
아무래도 이가브에서 제공하는 압축방법과 반디집에서 사용하는 압축방법이 서로 상이한 것 같습니다.
오류 해결부탁드립니다.
컴프레스 버전 : commons-compress-1.12
Windows 버전 : Windows7 32bit
육군 정보체계관리단에서 개발을 하고 있습니다.
e-book형태의 파일을 업로드해야하는데 이게 단일 파일이 아니라,
index.html과 몇개의 폴더로 구성되어있습니다.
그래서 파일을 모두 압축해서 서버에 올리고 압축 해제 후 e-book을 볼 수 있게 하려고 합니다.
문제는 압축을 해제하는 부분에서 오류가 납니다.
반디집 프로그램을 사용해서 .zip으로 압축 후에 서버에 올리고 압축 해제를 시키면
java.io.IOException: 지정된 경로를 찾을 수 없습니다.
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1006)
at egovframework.com.utl.sim.service.EgovFileTool.createNewFile(EgovFileTool.java:899)
at ...
이런 오류가 발생합니다.
오류 발생과 함께 압축해제 하고자 하는 폴더가 생기고 그 폴더 안을 보면 압축해제 실패한 파일 하나만 남아 있습니다.
이상한 점은 반디집으로 압축하지 않고 EgovFileCmprs.cmprsFile을 이용해서 압축을 하면 압축해제가 정상적으로 잘 됩니다.
아무래도 이가브에서 제공하는 압축방법과 반디집에서 사용하는 압축방법이 서로 상이한 것 같습니다.
오류 해결부탁드립니다.
A
안녕하십니까, 임기영님
표준프레임워크센터입니다.
센터에서 해당 내용 확인하여 보니
EgovFileCmprs.java 파일에 예외처리가 필요한것을 확인하였습니다.
decmprsFile()부분을 다음과 같이 수정하여야 합니다.
try {
File efile;
while ((entry = zinput.getNextEntry()) != null) {
String filename = entry.getName();
String entryFilePath = tarFile.getAbsolutePath() + FILE_SEPARATOR + filename;
efile = new File(entryFilePath);
if (entry.isDirectory()) {
EgovFileTool.c reateDirectories(efile.getAbsolutePath());
} else {
foutput = new FileOutputStream(efile);
while ((cnt = zinput.read(buffer)) != -1) {
if (foutput != null)
foutput.write(buffer, 0, cnt);
}
}
}
EgovFileTool.c reateDirectories(efile.getAbsolutePath()); 이 부분은
efile.mkdirs()로 수정하셔도 될듯합니다.
기재하신 이메일로드 수정된 소스 전달드리겠습니다.
감사합니다.
표준프레임워크센터입니다.
센터에서 해당 내용 확인하여 보니
EgovFileCmprs.java 파일에 예외처리가 필요한것을 확인하였습니다.
decmprsFile()부분을 다음과 같이 수정하여야 합니다.
try {
File efile;
while ((entry = zinput.getNextEntry()) != null) {
String filename = entry.getName();
String entryFilePath = tarFile.getAbsolutePath() + FILE_SEPARATOR + filename;
efile = new File(entryFilePath);
if (entry.isDirectory()) {
EgovFileTool.c reateDirectories(efile.getAbsolutePath());
} else {
foutput = new FileOutputStream(efile);
while ((cnt = zinput.read(buffer)) != -1) {
if (foutput != null)
foutput.write(buffer, 0, cnt);
}
}
}
EgovFileTool.c reateDirectories(efile.getAbsolutePath()); 이 부분은
efile.mkdirs()로 수정하셔도 될듯합니다.
기재하신 이메일로드 수정된 소스 전달드리겠습니다.
감사합니다.