解决再送100分 XDocument.Save方法出现异常,求可能原因
public void MakeIDListFile(string fileName, string[] idList)
{
XDocument doc = new XDocument();
XDeclaration declaration = new XDeclaration("1.0", "shift_jis", "yes");
doc.Declaration = declaration;
XElement idListElement = new XElement("ID_LIST");
doc.Add(idListElement);
XElement idElemtent;
for (int i = 0; i < idList.Length; i++)
{
idElemtent = new XElement("ID");
idElemtent.Add(idList[i]);
idListElement.Add(idElemtent);
}
doc.Save(fileName); }
异常信息如下
System.IO.IOException: 要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
場所 System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
場所 System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)
場所 System.Xml.Linq.XDocument.Save(String fileName)
場所 XXXXXXXXX.common.util.CommonService.MakeIDListFile(String fileName, String[] pnList)
这个异常的可能的汉语意思:请求的操作无法在使用用户映射区域打开的文件上执行
程序一直正常运行,某日连续发生几次这个异常,过了段时间又正常运行。
什么原因可能导致这个异常呢? 文件不存在,文件无法访问,路经错误等都不是报这个错。
[解决办法]
百度搜索了很多信息:综合了一下
1.文件夹没有相应的操作权限
2.文件不存在?
3.该文件被其它人打开没有关闭
依次的解决方法你懂的。
[解决办法]
个人认为应该是文件被同时占用,没有即时释放资源引起的
[解决办法]
会不会没有考虑到线程间的安全?一旦多线程操作就出现IO冲突呢?
[解决办法]
是不是XML文件写好之后,然后以非只读的方式打开,再次写入导致的文件占用?
------解决方案--------------------
目测是系统问题,,你看都乱码了...
要求された操作はユーザー マップ セクションで開いたファイルでは実行できません。
これは何機八ものですね
きっとシステムの問題
[解决办法]
操作xml文件,一般检查下这样几个方面,
1,权限,
2,进程占用,是否发生资源抢占情况
3,文件特别大,内存资源情况。
doc.save前查看下文件是否存在,资源释放等操作,一般都没有问题.
[解决办法]