使用Java将文件夹解压缩到Program File文件夹

时间:2016-05-20 10:18:04

标签: java

我目前正在尝试创建一个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

3 个答案:

答案 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