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
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))
{
...
}