koruyarak ZIP belirli dizin ayıklamak bunu yaparken disk, ama ben klasör yapısını perserve veremiyoruz ve bunun yerineC# Bir zip arşivi ve bir arşiv içinde klasör yapısına sahip şuna benzer klasör yapısını
- fileA.txt
+ dirB
- fileB.txt
I
- fileA.txt
- fileB.txt
olsun Ben
Path.Combine()
yerine
entry.FullName
arasında
entry.Name
kullanmak nedeni de oldukça olumlu değilim, ama
FullName
kullanmak olsaydı, ben kök dizin
dirA
Ben yolunda olurdu
using (ZipArchive archive = ZipFile.OpenRead(archivePath)) // archivePath is path to the zip archive
{
// get the root directory
var root = archive.Entries[0]?.FullName;
if (root == null) {
// quit in a nice way
}
var result = from curr in archive.Entries
where Path.GetDirectoryName(curr.FullName) != root
where !string.IsNullOrEmpty(curr.Name)
select curr;
foreach (ZipArchiveEntry entry in result)
{
string path = Path.Combine(extractPath, entry.Name); // extractPath is somwhere on the disk
entry.ExtractToFile(path);
}
}
:
İşte benim kod ayıklamamak için çalışıyor. Yani buradan bir duvara isabet ettik ve aklınıza gelebilecek tek çözüm ile tüm zip ayıklanması edilir:
ZipFile.ExtractToDirectory(archivePath, extractPath);
... sonra farklı bir yere dirA
gelen alt klasörleri taşıma ve dirA
silme. Hangisi en şanslı fikirlere benzemiyor.
Herhangi bir yardım
çok takdir edilmektedir.
Neden bu harika bir çözüm olduğunu ve şimdi kadar mükemmel bariz görünüyor! Teşekkürler. – nn2202