2016-05-20 194 views
0

我目前正試圖創建一個Java程序,將文件夾解壓到某個文件夾中的文件夾Program Files內的程序文件夾中。解壓縮文件夾中使用Java

我使用的第三方庫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 

回答

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(); 
} 
+0

文件夾確實存在,因爲我創造了自己。但是它似乎是一個許可的事情,因爲當代碼無法打開路徑名中表示的文件夾/文件名時引發異常。我試過你的代碼,但是我得到了和以前一樣的錯誤。 – noobCoder

+0

你能發佈錯誤日誌嗎? – mattymanme

+0

產生的原因:java.io.FileNotFoundException:C:\ Program Files文件(x86)的\ Test文件夾\新建文件夾\新建文本文檔(該系統找不到指定的路徑) \t在java.io.FileOutputStream中。 openO(Native Method) \t at java.io.FileOutputStream.open(FileOutputStream.java:270) \t at java.io.FileOutputStream。 (FileOutputStream.java:213) \t at java.io.FileOutputStream。 (FileOutputStream.java:162) \t在net.lingala.zip4j.unzip.UnzipEngine.getOutputStream(UnzipEngine.java:432) \t ... 7更 – noobCoder

1

重新啓動我的電腦,再跑到離CMD的代碼,它工作得很好:)

+0

good:)................ – mattymanme