Я использую приложение Windows.Моя проблема в том, что я хочу отобразить «Парентид файлов» и его уникальный идентификатор в списке с именем файлов.Я попробовал ниже код.Он отлично работает с ParentId, но когда дело доходит до pkUniqueId, он также принимает родительский идентификатор из-за строки с комментариями ниже.Он вызывает тот же метод и заменяет pkUniqueId на предыдущее значение.Моя структура Zip-файла
1) Test.Zip
1.1) Test1.Zip
1.1.1) SampleDoc1.doc
1.1.2) SampleDoc2.doc
1.2) SampleText1.txt
1.3) SampleText2.txt
Над структурой, правильно генерирующей Parent Id для своего потомка.Но UniqueId для последних двух документов реплицируется.
Если структура моего файла будет
1) Test.Zip
1.1) SampleText1.txt
1.2) SampleText2.txt
1.3) Test1.zip
1.3.1) SampleDoc1.doc
1.3.2) SampleDoc2.doc
, тогда он будет работать, как и ожидалось.
public static List<ZipExtracFile> ZipFile(string filePath, string initialDirectory, int pkUniqueId)
{
int extractFileParentId = pkUniqueId;
List<ZipExtracFile> extractFileList = new List<ZipExtracFile>();
using (ZipArchive archive = System.IO.Compression.ZipFile.OpenRead(filePath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
pkUniqueId = pkUniqueId + 1;
extractFileList.Add(new ZipExtracFile { pkUniqueId = pkUniqueId, fileName = entry.Name, parentId = extractFileParentId });
if (Path.GetExtension(entry.FullName).ToLower() == ".zip")
{
string fullPath = Path.Combine(initialDirectory, entry.FullName);
extractFileList.AddRange(ZipFile(fullPath, initialDirectory, pkUniqueId)); // Due to this Line
}
}
}
return extractFileList;
}
Есть предложения?Что не так с моим кодом?