0

我有一个 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)

但在 fileStrem.Length 处得到 NotSupportedException。

如何找到 zipEntry (File.csv) 的正确编码?

4

1 回答 1

0

前提是您可以确保该文件实际上是一个 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();
        }
    }    
} 
于 2017-09-26T12:26:04.773 回答