Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XDocument.Save(字符串文件名)是重新保存整个文件还是仅保存更改?_C#_Xml_Save_Linq To Xml - Fatal编程技术网

C# XDocument.Save(字符串文件名)是重新保存整个文件还是仅保存更改?

C# XDocument.Save(字符串文件名)是重新保存整个文件还是仅保存更改?,c#,xml,save,linq-to-xml,C#,Xml,Save,Linq To Xml,基本上,如果我执行Xdoc.Load(文件名),做一些更改,然后执行Xdoc.Save(文件名),它是否只保存已更改的内容,如插入或删除的元素等,还是重新保存所有内容 根据答案,我正在考虑确定我的应用程序是每次更改保存,还是在显式保存和退出时保存。还要考虑是写入多个xml文件,还是将所有内容保存在一个大文件中。我不知道一个大文件会有多大,但我怀疑它可能是10的MBs,所以如果它重新保存整个文件,那么我肯定不能在保存一个大文件的同时保存所有更改 如果它确实保存了整个文件,是否有人认为每个实体都有一

基本上,如果我执行Xdoc.Load(文件名),做一些更改,然后执行Xdoc.Save(文件名),它是否只保存已更改的内容,如插入或删除的元素等,还是重新保存所有内容

根据答案,我正在考虑确定我的应用程序是每次更改保存,还是在显式保存和退出时保存。还要考虑是写入多个xml文件,还是将所有内容保存在一个大文件中。我不知道一个大文件会有多大,但我怀疑它可能是10的MBs,所以如果它重新保存整个文件,那么我肯定不能在保存一个大文件的同时保存所有更改


如果它确实保存了整个文件,是否有人认为每个实体都有一个单独的xml文件(可能有数百个),这是否是一个好主意?

它保存了整个文件。这就是基于文本的格式的本质。如果不重写未更改的部分,文本文件无法覆盖自身

它保存整个文件。这就是基于文本的格式的本质。如果不重写未更改的部分,文本文件无法覆盖自身

是,保存一个文档将保存整个文档

“每次更改”保存的用例是什么?是否只是为了防止应用程序崩溃?如果是这样,我建议您将这些增量更改作为小文件保存在临时目录中,但当用户明确要求保存文件时,请将其保存在一个大文件中。(这样更容易复制等)在退出时删除临时目录


我真不知道你是否真的需要临时目录。这听起来好像是一件事半功倍的事。

是的,保存一个文档可以保存整个文档

“每次更改”保存的用例是什么?是否只是为了防止应用程序崩溃?如果是这样,我建议您将这些增量更改作为小文件保存在临时目录中,但当用户明确要求保存文件时,请将其保存在一个大文件中。(这样更容易复制等)在退出时删除临时目录


我真不知道你是否真的需要临时目录。这听起来像是做了很多工作,但收效甚微。

还有一点;对于可变长度编码,例如UTF8(这在xml中很常见),这一点是双重的——这意味着您甚至不能(可靠地)交换单个字符而不冒损坏的风险;对于可变长度编码,例如UTF8(这在xml中很常见),这一点是双重的——这意味着您甚至不能(稳健地)交换一个字符而不冒损坏的风险。没错,每次更改都会保存,以防崩溃、断电或其他异常事件。这不是一个大问题,没有什么真正的关键任务,但很好地保证了用户永远不需要担心重新输入以前输入的数据(不包括损坏/删除的文件/磁盘)。尽管我想知道仅仅在后台线程上保存是否足够。保存27MB for循环生成的xml不到2秒,如果它阻塞了UI,那么这段时间太长,如果它是在后台,那么可能还可以。这超过了预期用例数据的95%。是的,请注意,在后台线程中保存数据时,您需要确保不更改UI中的数据。对,每次更改保存的数据仅用于发生崩溃、断电或其他异常事件的情况。这不是一个大问题,没有什么真正的关键任务,但很好地保证了用户永远不需要担心重新输入以前输入的数据(不包括损坏/删除的文件/磁盘)。尽管我想知道仅仅在后台线程上保存是否足够。保存27MB for循环生成的xml不到2秒,如果它阻塞了UI,那么这段时间太长,如果它是在后台,那么可能还可以。这超过了预期用例数据的95%。是的,请注意,在后台线程中保存数据时,您需要确保不更改UI中的数据。