Найти тип кодировки DeflateStream
У меня есть ZIP-файл с CSV-файлом внутри. Я использую следующий код для чтения файла:
using (ZipArchive zipArchive = ZipFile.OpenRead(filePath))
{
var zipArchiveEntry = zipArchive.GetEntry("File.csv");
var zipEntry = zipArchiveEntry.Open();
...
}
ZipEntry имеет тип System.IO.Compreesion.Deflatestream.
Я пытался использовать StreamReader.CurrentEncoding, но он дает неправильное значение кодировки.
Я использую это решение сейчас,
this.GetFileEncoding(zipEntry)
но получая NotSupportedException в fileStrem.Length.
Как мне найти правильную кодировку zipEntry (File.csv)?
1 ответ
При условии, что вы можете убедиться, что файл на самом деле является файлом cvs, тогда просто используйте потоковый ридер, чтобы получить его содержимое из потока записи при открытии
using (ZipArchive archive = ZipFile.OpenRead(filePath)) {
var entry = archive.GetEntry("File.csv");
if (entry != null) {
using (var reader = new StreamReader(entry.Open())) {
var csv = reader.ReadToEnd();
}
}
}