我正在编写一个小应用程序,使用.NET DataSet和XML从数据库导出和导入数据,作为其中的一部分,我正在执行以下操作。
StreamWriter sw = new StreamWriter(file);
sw.Write(xml.OuterXml);
sw.Close();
问题是close方法关闭FileStream(传递给构造函数的文件参数)但不释放文件锁。该文件是我编写的程序创建的文件,所以我知道没有其他东西可以锁定它。
我做错了什么或这是一个Windows错误?
修改
是'file'是一个FileStream对象,我天真地假设在包装文件流的流上调用close()也会通过调用FileStream.close方法来清理和处理底层文件流。但是我不再确定了。
将其包含在使用块中仍具有相同的效果。
另外需要注意的是,文件流对象是以不同的方法创建的,但不应该有任何区别
答案 0 :(得分:-1)
请尝试使用此代码:
using (StreamWriter sw = new StreamWriter(file)) sw.Write(xml.OuterXml);
(或尝试手动调用sw.Dispose()
)
答案 1 :(得分:-1)
将文件流包装在使用中是否有帮助,或者只是使用重载方法来创建流编写器:
using (FileStream fs = new FileStream("path", FileMode.Append))
using (StreamWriter sw = new StreamWriter(fs))
{
sw.Write(xml.OuterXml);
sw.Close();
}
或:
using (StreamWriter sw = new StreamWriter("path"))
{
sw.Write(xml.OuterXml);
sw.Close();
}
我怀疑问题出在代码创建或使用FileStream。也许您可以详细说明如何使用您创建的FileStream对象。