Zip文件条目具有自定义文件扩展名。 C#声称无法打开

时间:2013-09-18 20:51:55

标签: c# .net file-type

找到解决方案。

感谢大家帮助我,我发现根本问题是什么。 .trl文件与它无关。这条路是错误的。当它应该是“TRLR”+ fileName时,我正在做“TRLR”+ Path。这对我来说是一个愚蠢的错误,我为浪费你的时间而道歉,但我很感激你的帮助!


我有一个由第三方提供给我们的zip文件。在这个zip文件是自定义文件。这些只是具有不同扩展名的文本文件,我认为这只是为了让我感到沮丧。

我正在尝试在我的C#应用​​程序中打开这些文件,但它不断抛出不支持该格式的错误。

由于这些只是文本文件,我觉得必须有一些方法可以实现这一点。

如果有任何想法,请告诉我。

代码:

using (ZipArchive archive = ZipFile.OpenRead(_trailerName))
{
     ZipArchiveEntry entry = archive.GetEntry(tableChanged + ".trl");
     Stream ms = entry.Open(); //Here is what's causing the issue.
     StreamReader reader = new StreamReader(ms);
     string allLinesRead = reader.ReadToEnd();
     string[] everyCell = allLinesRead.Split('|');
     int numRecords = Convert.ToInt32(everyCell[1]);
     int numChanged = getRecordNum(tableChanged);
     Console.Write(numRecords + "/" + numChanged + " - " + tableChanged);
     if (numChanged != numRecords)
     {
          _errorMessage += "Records updated do not match trailer. (" + numRecords + "/" + numChanged + ") Please check database. Table affected: " + tableChanged + Environment.NewLine;
     }
}

错误:

The given path's format is not supported.

我知道这是具体的,但我需要建议我可以采取哪些步骤来解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:1)

.NET的本机zip功能常常缺乏处理和修改由Windows zip工具以外的应用程序创建的zip文件的能力。虽然“zip”文件是标准化的,但您仍然可以看到文件头和属性的大量变化。

我建议你研究一下DotNetZip(Ionic),它是第三方库,在创建和打开zip文件方面具有非常强大的功能。我发现它比.NET给你的基本功能更宽容和更强大,打开zip的代码与你的代码非常相似。