我使用SharpZipLib的開源.NET庫我的目標是要解壓縮XML文件,讀入的數據集。但是,在將文件讀入數據集時出現以下錯誤:「根級數據無效,第1行,第1位。」 我相信發生了什麼是解壓縮代碼不釋放該文件的原因如下。從<a href="http://www.icsharpcode.net" rel="nofollow noreferrer">www.icsharpcode.net</a></p> <p>解壓文件錯誤
1.)如果我解壓縮文件並退出應用程序。當我重新啓動應用程序時,我可以將解壓縮後的文件讀入數據集。 2.)如果我在寫入xml文件後立即讀取(不壓縮),那麼它工作正常。
3.)如果我將數據集寫入xml,將其壓縮,解壓縮,然後嘗試將其讀回來,我得到異常。
下面的代碼非常簡單。 UnZipFile將返回剛解壓縮的文件的名稱。在該調用的正下方是將其讀入數據集的調用。變量fileToRead是新解壓縮的xml文件的完整路徑。
string fileToRead = UnZipFile(filepath, DOViewerUploadStoreArea);
ds.ReadXml(fileToRead)
private string UnZipFile(string file, string dirToUnzipTo)
{
string unzippedfile = "";
try
{
ZipInputStream s = new ZipInputStream(File.OpenRead(file));
ZipEntry myEntry;
string tmpEntry = String.Empty;
while ((myEntry = s.GetNextEntry()) != null)
{
string directoryName = dirToUnzipTo;
string fileName = Path.GetFileName(myEntry.Name);
string fileWDir = directoryName + fileName;
unzippedfile = fileWDir;
FileStream streamWriter = File.Create(fileWDir);
int size = 4096;
byte[] data = new byte[4096];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0) { streamWriter.Write(data, 0, size); }
else { break; }
}
streamWriter.Close();
}
s.Close();
}
catch (Exception ex)
{
LogStatus.WriteErrorLog(ex, "ERROR", "DOViewer.UnZipFile");
}
return (unzippedfile);
}