找不到路径的一部分
本文关键字:一部分 路径 找不到 | 更新日期: 2023-09-27 17:56:25
我有以下代码:
fileinfo = new FileInfo(filePathAndName);
if (!fileinfo.Exists)
{
using (xmlWriter = new XmlTextWriter(filePathAndName, System.Text.Encoding.UTF8))
{
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("root");
xmlWriter.WriteStartElement("objects");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Close();
}
}
文件路径和名称将被C:/MyApp%205/Produkter/MyApp%20Utveckling/Host/Orbit.Host.Dev/bin/ExceptionLog.xml.
文件夹确实存在,但文件不存在。在这种情况下,XmlTextWriter 应该创建文件,但它会抛出Could not find part of the path
.
这可能是我在这里忘记的非常明显的事情,请帮忙。
编辑:这是路径的真实外观:
C:'MyApp 5'Produkter'MyApp Utveckling'Host'Orbit.Host.Dev'Bin
这就是代码中使用的URL的生成方式:
(new System.Uri(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) + "''ExceptionLog.xml")).AbsolutePath
我已经尝试了代码,ArgumentException
XmlTextWriter
构造函数抛出以下消息:
不支持 URI 格式。
请考虑以下代码:
// Get the path to assembly directory.
// There is a lot of alternatives: http://stackoverflow.com/questions/52797/
var assemblyPath = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
var directoryPath = Path.GetDirectoryName(assemblyPath);
// Path to XML-file.
var filePath = Path.Combine(directoryPath, "ExceptionLog.xml");
using (var xmlTextWriter = new XmlTextWriter(filePath, Encoding.UTF8))
{
...
}
试试这个 -- 在 filePathAndName 之前添加 @
string filePathAndName = @"C:'MyApp 5'Produkter'MyApp Utveckling'Host'Orbit.Host.Dev'Bin'text.xml";
FileInfo fileinfo = new FileInfo(filePathAndName);
if (!fileinfo.Exists)
{
using (XmlTextWriter xmlWriter = new XmlTextWriter(filePathAndName, System.Text.Encoding.UTF8))
{
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("root");
xmlWriter.WriteStartElement("objects");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Close();
}
}
如果要与网络上的路径(也称为 UNC 路径)进行交互,则必须使用 Server.MapPath 将 UNC 路径或虚拟路径转换为 .NET 可以理解的物理路径。 因此,无论何时打开文件,创建、更新和删除文件,打开目录和删除网络路径上的目录,请使用 Server.MapPath
。
例:
System.IO.Directory.CreateDirectory(Server.MapPath("''server'path"));
与其使用Uri.AbsolutePath
,不如Path.Combine()
var filepath = @"C:'MyApp 5'Produkter'MyApp Utveckling'Host'Orbit.Host.Dev'Bin"
var filename = Path.Combine(filepath, "ExceptionLog.xml");
var fileInfo = new FileInfo(filename);
if(!fileInfo.Exists)
{
//ToDo: call xml writer...
}
使用 Assembly.Location 和 Path.Combined 形成 fileNameAndPath 变量:
var folder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var filePathAndName = Path.Combine(folder, "ExceptionLog.xml");