我目前正在尝试创建一个Java
程序,该程序会将文件夹解压缩到Program Files
文件夹中的某个文件夹中。
我正在使用第三方库Zip4j
来解压缩该文件夹。以下是我正在使用的代码。
String source = "C:\\Users\\chris\\Desktop\\New folder.zip";
String destination = "C:\\Program Files (x86)\\Test Folder";
String password = "password";
try {
ZipFile zipFile = new ZipFile(source);
if (zipFile.isEncrypted()) {
zipFile.setPassword(password);
}
zipFile.extractAll(destination);
} catch (ZipException e) {
e.printStackTrace();
}
如果我试图解压缩到桌面上的普通文件夹,它的效果非常好。但是一旦我尝试将其解压缩到程序文件,我得到以下Exception java.io.FileNotFoundException
。
我认为我的程序需要管理员权限才能访问Program Files
文件夹中的文件夹。有谁知道怎么做?
错误日志:
Caused by: java.io.FileNotFoundException: C:\Program Files (x86)\Test Folder\New folder\New Text Document.txt (The system cannot find the path specified) at java.io.FileOutputStream.open0(Native Method) at java.io.FileOutputStream.open(FileOutputStream.java:270) at java.io.FileOutputStream.<init>(FileOutputStream.java:213) at java.io.FileOutputStream.<init>(FileOutputStream.java:162) at net.lingala.zip4j.unzip.UnzipEngine.getOutputStream(UnzipEngine.java:432) ... 7 more
答案 0 :(得分:1)
请尝试检查文件夹是否可访问或存在。此外,如果您有权访问该文件夹。然后尝试以下代码:
String source = "C:\\Users\\chris\\Desktop\\New folder.zip";
String destination = "C:\\Program Files (x86)\\Test Folder";
String password = "password";
try {
ZipFile zipFile = new ZipFile(source);
if (zipFile.isEncrypted()) {
zipFile.setPassword(password);
}
File file = new File(destination);
if (file.exists()) {
zipFile.extractAll(destination);
} else {
System.out.println("Foolder not exists"+destination);
}
} catch (ZipException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
重新启动我的电脑,并从cmd重新运行代码,它运行良好:)
答案 2 :(得分:1)
您需要管理员权限才能写入程序文件夹。 打开管理员命令行并从那里执行。
点击此处查看如何从java代码启用管理员权限:[Run Java file as Administrator with full privileges