2012-10-01 32 views
2

我想保存一個XAP文件女巫基本上就像一個zip文件,我可以存檔並保存它,但它會添加到許多文件夾?存檔壓縮文件並將其保存到選定位置,不需要額外的文件路徑?

我正在使用Ionic.Zip DLL來歸檔我的XAP文件。

該文件保存到我的路徑,但是當我打開它有文件夾的用戶,然後在那裏它有文件夾肖恩,並在該文件夾中的文件夾,在FormValue文件夾,然後在那邊它有我的3個文件我壓縮。

我需要Xap文件只包含我壓縮的3個文件,而不是所有額外的文件夾裏面。

using (ZipFile zip = new ZipFile()) 
{ 
// add this map to zip 
zip.AddFile("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//data.xml"); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//dvform.dvform"); 
zip.Save("C://Users//Shaun//Documents//FormValue//NewValuation.xap"); 
} 
+0

同樣的問題http://stackoverflow.com/questions/6202267/how-to-zip-only-files-and-not-the-full-path-hierarchy-with-dotnetzip-in-powershe – Loci

回答

1

使用zip.AddFile(string fileName, string directoryPathInArchive)過載,並指定空字符串""第二個參數:

zip.AddFile("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map, ""); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//data.xml", ""); 
zip.AddFile("C://Users//Shaun//Documents//FormValue//dvform.dvform", ""); 

從文檔:

/// <param name="directoryPathInArchive"> 
/// Specifies a directory path to use to override any path in the fileName. 
/// This path may, or may not, correspond to a real directory in the current 
/// filesystem. If the files within the zip are later extracted, this is the 
/// path used for the extracted file. Passing <c>null</c> (<c>Nothing</c> in 
/// VB) will use the path on the fileName, if any. Passing the empty string 
/// ("") will insert the item at the root path within the archive. 
/// </param> 
這裏
+0

當我在最後添加「」時會出現一個保存對話框?我能否在代碼中設置保存位置? – Pomster

1
List<string> filesToBeAdded = new List<string>(); 
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//" + property_details_locality_map); 
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//data.xml"); 
filesToBeAdded.Add("C://Users//Shaun//Documents//FormValue//dvform.dvform"); 
zip.AddFiles(filesToBeAdded, false, "ShaunXAP"); // you could pass empty string here instead of "ShaunXAP" 
zip.Save("C://Users//Shaun//Documents//FormValue//NewValuation.xap"); 

這會將所有文件合併成一個共同的文件夾(「ShaunXAP」在這種情況下),並且將忽略archieved文件的文件夾層次結構。

+0

這保存在哪裏? – Pomster

+0

之後你必須調用zip.Save方法。 –