Could not find a part of the path?
Solution 1
I've tried the code, ArgumentException
is thrown by XmlTextWriter
constructor with this message:
the URI formats are not supported.
Consider the following code:
// 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))
{
...
}
Solution 2
Try this -- add @ before the 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();
}
}
Solution 3
If you are interacting with a path on a network (aka UNC path), you have to use Server.MapPath to turn a UNC path or virtual path into a physical path that .NET can understand. So anytime you're opening files, creating, updating and deleting files, opening directories and deleting directories on a network path, use Server.MapPath
.
Example:
System.IO.Directory.CreateDirectory(Server.MapPath("\\server\path"));
![Banshee](https://i.stack.imgur.com/uVNQq.jpg?s=256&g=1)
Banshee
Updated on July 09, 2022Comments
-
Banshee almost 2 years
I have the following code :
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(); } }
The filePathAndName will be
C:/MyApp%205/Produkter/MyApp%20Utveckling/Host/Orbit.Host.Dev/bin/ExceptionLog.xml.
The folder does exists but the file does not. XmlTextWriter should in this case create the file but instead it throws
Could not find part of the path
.It's probably something very obvious I have forgotten here, please help.
Edit : This is how the path really looks like :
C:\MyApp 5\Produkter\MyApp Utveckling\Host\Orbit.Host.Dev\Bin
And this is how the URL that is used in the code is generated :
(new System.Uri(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) + "\\ExceptionLog.xml")).AbsolutePath