2009-08-13 63 views
0

filesToInclude清單時,有這樣的數據:如何剝離父文件夾名稱,只使用子目錄名稱荏苒

c:/temp/folder1/data.1 
c:/temp/folder1/subfolder/data.1 
c:/temp/folder1/subfolder2/data.1 

以下DotNetZip代碼存儲的完整路徑開始/溫度/但我喜歡只存儲/文件夾1/without/temp /前綴。

using (ZipFile zip = new ZipFile()) 
    { 
     foreach (var f in filesToInclude) 
     { 
      zip.AddFile(f); 
     } 

回答

1

只需指定目錄部分作爲第二個參數。這意味着從完整的文件名找到目錄,然後剝離出主要部分。

String baseDirectory = "c:/temp/"; 
using (ZipFile zip = new ZipFile()) 
{ 
    foreach (var f in filesToInclude) 
    { 
     String directory = Path.GetDirectoryName(f); 
     // Consider adding error checking here to make sure that 
     // directory really does start with baseDirectory! 
     String relative = directory.Substring(baseDirectory.Length); 
     zip.AddFile(f, relative); 
    } 
} 
相關問題