2012-10-16 36 views
0

我有一個.lst文件,其中包含必須壓縮的各種數據的路徑。該路徑可能是可執行文件的直接路徑或日誌文件的路徑,也可能包含通配符,如 - c:\ abc * .exe。我如何將所有這些壓縮成一個zip文件?由於使用DotNetZip庫壓縮列表文件的內容

DotNetZip圖書館@:HTTP://dotnetzip.codeplex.com/wikipage標題= CS-例子& referringTitle =例子

.lst文件的

內容:

C:\登錄\ abc.log

C:\登錄\ def.log

C:\平* .BAT

C:\平* .EXE

這是我的嘗試:

using (ZipFile zip = new ZipFile())  
{      
    StreamReader file = File.OpenText("C:\\pingman\\pingzipA.lst"); 
    string read = String.Empty; 

    while ((read = file.ReadLine()) != null)     
    {          
     zip.AddSelectedFiles(read, true);  
     zip.Save("c:\\update.zip");  
    } 

    file.Close(); 
} 
+0

的zip.save應該是While循環對於初學者外..看看這個鏈接這會給你幾個例子/選項,你可以使用.. HTTP://www.codedigest。 com/Articles/ASPNET/384_Creating_ZIP_files_on_the_fly_in_ASPNet.aspx – MethodMan

+0

我嘗試了zip.Save在while循環之外,因爲它邏輯上合理,但沒有好處。我想到了代碼中的其他東西。因爲我是.Net技術的新手。 – Kimi

+0

@BigM:是的,會對它起作用,只是更新它。謝謝 – Kimi

回答

1

試着這麼做:

while ((read = file.ReadLine()) != null)     
{    
    if (read.Contains("*"))       
    { 
     zip.AddSelectedFiles(read, true);  
    } 
    else 
    { 
     zip.AddFile(read); 
    } 
} 
zip.Save("c:\\update.zip");  
+0

它部分工作。 else部分正在執行。它不添加路徑,如果它包含一個*我試圖修改它 - 如果(read.Contains(「*。」),但沒有好處。 – Kimi

+0

@ user1620230 - 我不知道我的想法。還沒有廣泛使用我自己的庫。 – Bobson

+0

謝謝,我今天工作了,找到了一種方法來獲得我想要的東西:) – Kimi

1

這裏是有例子的TON看看作爲使用的例子,爲您的工作正在做..什麼甚至還有一個例子的鏈接採用野生卡

DontNetZip Library Site with Examples

+0

這就是我所指的:) – Kimi

+0

這些示例幫助並且在我們擁有硬編碼路徑。但是我們的列表文件有絕對路徑和帶有通配符的路徑的混合。 – Kimi

0

得到它的工作。

if (read.Contains("*")) 
        { 
         int i = read.IndexOf("*"); 
         string path = read.Substring(0, i--); 
         string doc = read.Substring(i+1); 
         zip.AddSelectedFiles(doc, @path, true); 
        } 
        else 
        { 
         zip.AddFile(read); 
        } 
相關問題