Как удалить путь к папке внутри zip-файла. Я хочу, чтобы только txt-файлы в zip-файле - PullRequest
1 голос
/ 24 февраля 2012

Я создаю zip-файл из папки D:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hi. В папке 2 txt файла.

Но проблема в том, что в zip-файле есть путь D:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hi, а в этой папке находятся 2 txt-файла.

Теперь мне нужно удалить путь D:\Nagaraj\Dotnet\Zipfile\Zipfile\Filebuild\Hi и напрямую сгенерировать Hi.zip с файлом 2 txt в корне архива. Я использую 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();
}

1 Ответ

1 голос
/ 24 февраля 2012

Проблема заключается в том, как вы создаете 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();
}
...