我正在使用 StreamWriter 序列化来覆盖现有的 xml 文件。下面是我的代码段:
using(StreamWriter sw = new StreamWriter("\\hard disk\logs\test.xml"))
{
this.Serializer.Serialize(sw,this.StateObject);
}
出于某种原因,我不时在 StreamWriter 行上收到 IOException,它非常普遍,当我尝试调试它时它没有内部异常。
StreamWriter 行实际上清除了我的 test.xml 文件的内容并使其变为 0 字节,但同时抛出异常。由于这个异常,序列化从未发生,所以我最终得到了一个 0 字节的文件。我可以使用异常处理程序来纠正这个 0 字节,但我更感兴趣的是解决 StreamWriter 首先抛出异常的原始问题。
你们以前从 StreamWriter 看到过这种行为吗?我确保路径有效,并且我验证它具有权限并且没有其他进程正在访问该文件(即使我会在堆栈跟踪中看到该错误)
我想知道我在 Window CE 上运行的事实与它有什么关系?即使 MSDN 指出 Window CE 支持这个 System.IO 库
编辑:
下面是我的堆栈跟踪,该CopyData()
函数是包含我的序列化的函数。查看该行的值System.IO.__Error.WinIOError(Int32 errorCode, String str)
,我看到我的 str 值是 "\hard disk\logs\test.xml" 并且 errorCode 是2147483648。
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.IO.StreamWriter.CreateFile(String path, Boolean append)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
at System.IO.StreamWriter..ctor(String path)
at Shs.ScanPanel.CA.DataManager.DataManagercr.CopyData(Object data)
at System.Threading.Timer.ring()