나는 다음과 같은 IOException가 얻을 사용 거부 :IOException이 액세스 FileOutputStream에
java.io.IOException: Access is denied
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:850)
at zipUnzipper.main(zipUnzipper.java:41)
다음 코드 조각을 실행하려고 :
public class zipUnzipper {
public zipUnzipper() {
}
public static void main(String[] args){
//Unzip to temp folder. Add all files to mFiles. Print names of all files in mFfiles.
File file = new File("C:\\aZipFile.zip");
String filename = file.getName();
String filePathName = new String();
int o = filename.lastIndexOf('.');
filename = filename.substring(0,o);
try {
ZipFile zipFile = new ZipFile (file.getAbsoluteFile());
Enumeration entries = zipFile.entries();
while(entries.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry) entries.nextElement();
System.out.println("Unzipping: " + zipEntry.getName());
BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(zipEntry));
byte[] buffer = new byte[2048];
filePathName = "C:\\TEMP\\"+filename+"\\";
File fileToWrite = new File(filePathName+ zipEntry.getName());
fileToWrite.mkdirs();
fileToWrite.createNewFile();
FileOutputStream fos = new FileOutputStream(fileToWrite);
BufferedOutputStream bos = new BufferedOutputStream(fos , buffer.length);
int size;
while ((size = bis.read(buffer, 0, buffer.length)) != -1) {
bos.write(buffer, 0, size);
}
bos.flush();
bos.close();
bis.close();
}
zipFile.close();
File folder = new File (filePathName);
File [] mFiles = folder.listFiles();
for (int x=0; x<mFiles.length; x++) {
System.out.println(mFiles[x].getAbsolutePath());
}
} catch (ZipException ze) {
ze.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
그것은 나에게 보인다 어떤 이유로 JVM 수 새 파일을 만들지 마라. 파일이 이미 존재하면 코드가 완벽하게 실행됩니다. JVM이 새로운 파일을 생성 할 수 있는지 또는 단순히 뭔가 잘못하고 있는지를 지시하는 액세스 파일이 있습니까?
어떤 도움
훨씬내가 자바 1.4을 실행하는거야 및 Windows XP에서 JDeveloper의에서 테스트 한 :-) 감사합니다.
Windows 계정에 해당 디렉터리에 파일을 만들 수있는 권한이 있습니까? –
http://stackoverflow.com/a/23697734/715269 – Gangnus