在 XmlReader .NET 4.0 中加载失败目录文件
Load fail directory file in XmlReader .NET 4.0
这个文件名的字符是(0xE700)。
当我在 XmlReader 中读取时,我无法读取它,因为文件名加载更改字符是 %EE%9C%80
XmlReader reader = XmlReader.Create(fileName, settings);
为什么 (0xE700) => %EE%9C%80!
这是因为 XmlReader.Create
将第一个参数视为 Uri。这不是很明显,但你可以从方法签名中得到它
XmlReader Create(string inputUri, XmlReaderSettings settings, XmlParserContext inputContext);
0xE700是Uri中不能使用的特殊字符,转义为%EE%9C%80!
但是您可以更改代码并使用 FileStream
读取文件内容,例如
var fileName = string.Format("{0}test.xml", char.ConvertFromUtf32(0xE700));
File.WriteAllText(fileName, "<root><node /></root>");
using (var fileStream = new FileStream(fileName, FileMode.Open))
{
using (var reader = XmlReader.Create(fileStream))
reader.ReadStartElement();
}
new FileStream(fileName, FileMode.Open)
将按名称读取文件并且不会对文件名进行编码(如 XmlReader.Create 那样)。
这个文件名的字符是(0xE700)。
当我在 XmlReader 中读取时,我无法读取它,因为文件名加载更改字符是 %EE%9C%80
XmlReader reader = XmlReader.Create(fileName, settings);
为什么 (0xE700) => %EE%9C%80!
这是因为 XmlReader.Create
将第一个参数视为 Uri。这不是很明显,但你可以从方法签名中得到它
XmlReader Create(string inputUri, XmlReaderSettings settings, XmlParserContext inputContext);
0xE700是Uri中不能使用的特殊字符,转义为%EE%9C%80!
但是您可以更改代码并使用 FileStream
读取文件内容,例如
var fileName = string.Format("{0}test.xml", char.ConvertFromUtf32(0xE700));
File.WriteAllText(fileName, "<root><node /></root>");
using (var fileStream = new FileStream(fileName, FileMode.Open))
{
using (var reader = XmlReader.Create(fileStream))
reader.ReadStartElement();
}
new FileStream(fileName, FileMode.Open)
将按名称读取文件并且不会对文件名进行编码(如 XmlReader.Create 那样)。