找到解决方案。
感谢大家帮助我,我发现根本问题是什么。 .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.
我知道这是具体的,但我需要建议我可以采取哪些步骤来解决这个问题。
感谢。
答案 0 :(得分:1)
.NET的本机zip功能常常缺乏处理和修改由Windows zip工具以外的应用程序创建的zip文件的能力。虽然“zip”文件是标准化的,但您仍然可以看到文件头和属性的大量变化。
我建议你研究一下DotNetZip(Ionic),它是第三方库,在创建和打开zip文件方面具有非常强大的功能。我发现它比.NET给你的基本功能更宽容和更强大,打开zip的代码与你的代码非常相似。