【发布时间】:2014-12-16 16:04:00
【问题描述】:
我需要使用 Stream 读取 .xml 文件的内容(这里 xml 文件存在于 zip 包中)。在下面的代码中,我需要在运行时获取文件路径(这里我已经硬编码了路径以供参考)。请告诉我如何在运行时读取文件路径。
我尝试使用字符串 s =entry.FullName.ToString();但得到错误“找不到路径”。我还尝试对路径进行硬编码,如下所示。但是得到相同的 FileNotFound 错误。
string metaDataContents;
using (var zipStream = new FileStream(@"C:\OB10LinuxShare\TEST1\Temp" + "\\"+zipFileName+".zip", FileMode.Open))
using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Read))
{
foreach (var entry in archive.Entries)
{
if (entry.Name.EndsWith(".xml"))
{
FileInfo metadataFileInfo = new FileInfo(entry.Name);
string metadataFileName = metadataFileInfo.Name.Replace(metadataFileInfo.Extension, String.Empty);
if (String.Compare(zipFileName, metadataFileName, true) == 0)
{
using (var stream = entry.Open())
using (var reader = new StreamReader(stream))
{
metaDataContents = reader.ReadToEnd();
clientProcessLogWriter.WriteToLog(LogWriter.LogLevel.DEBUG, "metaDataContents : " + metaDataContents);
}
}
}
}
}
我还尝试使用 Stream 对象获取 .xml 文件的内容,如下所示。但在这里我得到错误“流不可读”。
Stream metaDataStream = null;
string metaDataContent = string.Empty;
using (Stream stream = entry.Open())
{
metaDataStream = stream;
}
using (var reader = new StreamReader(metaDataStream))
{
metaDataContent = reader.ReadToEnd();
}
请建议,如何通过在运行时指定文件路径来使用 Stream 和 StreamReader 在 zip 文件中读取 xml 的内容
【问题讨论】:
-
发帖时请多加注意格式 - 两个代码 sn-ps 都适用于第一行,但其他所有内容都缩进了太多。在提交之前使用预览确保您的帖子看起来不错。