- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经写了这段代码:
public void Save()
{
using (FileStream fs = new FileStream(Properties.Settings.Default.settings_file_path, FileMode.Open))
{
XmlSerializer ser = new XmlSerializer(typeof(MySettings));
ser.Serialize(fs, this);
}
}
当我使用 FileMode.Open
时,一切都很好,输出是 e.x.像这样:
<?xml version="1.0"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<settingsList>
<Setting>
<Value>12</Value>
<Name>A0</Name>
<Type>MEASUREMENT</Type>
</Setting>
<Setting>
<Value>5000</Value>
<Name>C0</Name>
<Type>MEASUREMENT</Type>
</Setting>
</settingsList>
</MySettings>
但是当我将其更改为 FileMode.OpenOrCreate
时,输出将更改为:
<?xml version="1.0"?>
<MySettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<settingsList>
<Setting>
<Value>12</Value>
<Name>A0</Name>
<Type>MEASUREMENT</Type>
</Setting>
<Setting>
<Value>5000</Value>
<Name>C0</Name>
<Type>MEASUREMENT</Type>
</Setting>
</settingsList>
</MySettings>>
是什么导致整个 xml 文件因末尾附加的 >
符号而损坏。
这是可以解释的还是它的 C# 错误?
最佳答案
我刚刚重现了那个问题。正如我在评论中所写。
FileMode.Open
erases contents of the file whileFileMode.OpenOrCreate
does not.
似乎文件的新内容比之前的内容短了一个字符,这就是为什么您在末尾看到“>”的原因。
如果您正在编写文件,请使用 FileMode.Create
应该为您完成。
关于c# - FileMode.Open 和 FileMode.OpenOrCreate 文件存在时的区别? C#错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799265/
我真的不明白:FileMode.Create如果不存在则创建一个新文件,如果存在则覆盖一个。FileMode.Truncate不会创建新文件,而是删除现有文件的全部内容,因此基本上它也会覆盖文件。 那
我已经写了这段代码: public void Save() { using (FileStream fs = new FileStream(Properties.Settings.Defaul
我整个下午都在用这个头撞墙。我需要创建一对程序集( zip 和 tgz ),并且需要为存档中包含的 shell 脚本设置正确的可执行权限。 我所做的似乎没有任何区别,fileMode设置好像没有效果。
我看过无数示例和教程,这些示例和教程展示了如何创建文件,所有这些示例和教程都通过设置文件的权限位来“作弊”。我想知道/了解如何在创建/更新文件期间正确实例化 os.FileMode 以提供给作者。 一
我有一个程序试图过滤 NamedPipe 文件。由于它没有按预期工作,我打印了结果,但对输出结果感到惊讶。你能解释一下吗? package main import ( "io/ioutil"
什么是 git filemode?对我来说,它在每个 repo 的 ./git/config 文件中,靠近顶部: [core] filemode = true 这是什么?这是什么意思?与什么
阅读this ,我能够在全局和本地配置我的 fileMode配置为假。 然而,当我git clone , git 不断初始化项目,并将本地配置强制设为 fileMode true ,以便它覆盖我的全局
使用 Team City 从 Git 存储库中 checkout 。 (Gitlabs,如果重要的话) 从空构建目录开始。收到此错误: 致命:无法将“core.filemode”设置为“false”
我正在开发一个简单的 ASP.NET WebApi 应用程序。在 Controller 中,我有一个 POST 操作,它执行以下代码: using (var isoStore = IsolatedSt
Documentation说 FileMode.OpenOrCreate “指定操作系统应该打开一个文件,如果它存在;否则,应该创建一个新文件”,这听起来像是它会打开文件并写入它。相反,该文件似乎被覆
如何访问zip文件的filemode属性? >>> info = zin.infolist()[1] >>> info >>> info.filename 'test_dir/' >>> info.
我正在尝试以字符串形式从用户那里获取文件的用户权限,并将其转换为 os.FileMode 类型。 所以,我得到"0644"权限后,转换成644。我将其用作 ioutil.WriteFile 的参数。
我是 Go 新手,在读取默认文件权限/系统掩码时遇到一些问题。当然我可以指定固定权限: f, err := os.OpenFile(fpath, os.O_CREATE|os.O_WRONLY, 06
我正在尝试使用 using (var stream = new FileStream(filepath, FileMode.Append,FileAccess.Write))
我想做的是覆盖一个只读文件。使用读/写文件。 对于读/写文件,如果我使用 File.Open(file, FileMode.Create),则如果文件存在,则将其删除并创建一个新文件。 (虽然我怀疑如
我正在努力将我的 XNA 游戏转移到 MonoGame。我终于遇到了 System.IO.FileMode 和 System.IO.FileAccess 的问题。这两个都在 mscorlib 和 mo
考虑以下 Golang 中的短程序,它只是尝试写入一个文件。 package main import "io/ioutil" import "os" func main() { ioutil.
我有这个简单的基本代码来创建新文件并向其中写入一些数据。问题是当我运行程序时,我没有得到任何东西,既没有创建文件,也没有显示任何错误消息或异常,即使在调试代码时也没有出现错误。 这是代码: names
流来自 html 表单,通过 ajax var jqXHR = data.submit(); public static GetWordPlainText(Stream readStream,stri
我有一个使用 XML 文件格式的应用程序。应用程序可以更改这些 XML 文件,但它还使用 System.IO.FileSystemWatcher 查看程序运行时 XML 文件是否在程序外部发生了更改。
我是一名优秀的程序员,十分优秀!