2011-09-29 29 views
2

TrueZip創建虛擬目錄,而不是我在用下面的代碼的問題存檔

TFile src = new TFile(this.getMellomStasjon()); 
    TFile dst = new TFile(this.getZipFolder()+""+zipFile+".zip"); 
    if(dst.isDirectory()) 
     dst = new TFile(dst, src.getName()); 

    TFile.cp_rp(src, dst, null); 
    TFile file = newNonArchiveFile(dst); 
    if(dst.isArchive()) 
     TFile.umount(dst); 

我的目標是把包含文件的目錄到使用TrueZip一個ZIP歸檔。問題是代碼在本地工作,但不在生產計算機上。本地我得到一個ZIP文件,但在生產中,我得到一個文件夾,其中包含我試圖放入存檔(虛擬目錄)的文件。我必須使用TrueZip,因爲我將內容存檔超過4GB。

有什麼辦法可以強制TrueZip創建一個存檔而不是一個(虛擬)目錄嗎?

+0

你確定它不是?某些操作系統*至少可選地將* zip文件作爲虛擬目錄。 –

+0

在我切換到TrueZip之前,我使用了Java,ZipOutputStream和創建的條目中的默認庫。使用該庫時,所有ZIP存檔都以常規文件的形式出現,而不是像使用TrueZip時的目錄。 – ScratchMyTail

+0

我也試圖創建一個zip檔案文件,但最終創建一個目錄。我正在Windows(NTFS)操作系統上嘗試它。你找到解決方案嗎? –

回答

2

它可能不起作用,因爲模塊TrueZIP Driver ZIP的JAR工件在運行時類路徑中不存在。

要確定它是什麼,您可以通過設置自定義TArchiveDetector使ZipDriver成爲編譯時依賴項。這裏是一個例子:http://truezip.java.net/usecases/aff.html

你在這裏顯示的代碼是有問題的。你應該修復它:

// Call this once at application startup to make the ZipDriver a compile time 
// dependency. 
TFile.setDefaultArchiveDetector(
    new TArchiveDetector(
    "zip", 
    new ZipDriver(IOPoolLocator.SINGLETON))); 

// Here's the work. 
TFile src = new TFile(this.getMellomStasjon()); 
TFile dst = new TFile(this.getZipFolder(), zipFile + ".zip"); 
TFile.cp_rp(src, dst, TArchiveDetector.NULL); 
TFile.umount(dst); 
+0

我試過但沒有爲我工作。 –

相關問題