1

フォルダーから zip ファイルを生成しています D:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hi。フォルダー内に 2 つの txt ファイルがあります。

しかし、問題は、zip ファイル内にパスがあり、そのD:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hiフォルダー内に 2 つの txt ファイルがあることです。

ここで、パスを削除し、アーカイブのルートにある 2 つの txt ファイルを使用してD:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hi直接生成する必要があります。Hi.zipアーカイブの作成に SharpZipLib を使用しています。

protected void Page_Load(object sender, EventArgs e)
{
    StartZip("D:/Nagaraj/Dotnet/Zipfile/Zipfile/Filebuild/Hi",".zip");        
}

public void StartZip(string directory, string zipFileName)
{
    ZipFile z = ZipFile.Create(directory + zipFileName);
    z.BeginUpdate();
    string[] filenames = Directory.GetFiles(directory);
    foreach (string filename in filenames)
    {
        z.Add(filename);
    }
    z.CommitUpdate();
    z.Close();
}
4

1 に答える 1

1

問題は、zip ファイルの作成方法にあるようです。への呼び出しでファイルが配置されているディレクトリを渡しますAdd

代わりに、Path.GetFileNameメソッドを使用してファイル名を渡すだけです。

public void StartZip(string directory, string zipFileName)
{
    ZipFile z = ZipFile.Create(directory + zipFileName);
    z.BeginUpdate();

    string[] filenames = Directory.GetFiles(directory);

    foreach (string filename in filenames)
    {
        z.Add(Path.GetFileName(fileName));
    }
    z.CommitUpdate();
    z.Close();
}
于 2012-02-24T12:30:54.903 に答える