我有以下内容:
string file = string.Concat(
System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
),
"bla.xml");
现在文件是:
file:\C:\test\Debugbla.xml
如何删除"文件:\"前缀?
由于
答案 0 :(得分:8)
Uri类是操纵Uri的方法。虽然string.Replace
是一个选项,但最好使用为特定情况明确设计的工具,这些工具还会在必要时处理转义规则。
string file = string.Concat(System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bla.xml");
file = new Uri(file).AbsolutePath;
答案 1 :(得分:1)
改为使用Assembly.Location
属性,返回正常的文件路径。
另外,请使用Path.Join()
。
答案 2 :(得分:0)
file = file.Replace(@"file:\", "");
您可以用空字符串替换它。
答案 3 :(得分:0)
您可以替换文件:\部分路径,如此。
string file = string.Concat(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "bla.xml");
file = file.Replace(@"file:\","");
答案 4 :(得分:0)
如果需要访问路径,则可以使用GetExecuting程序集并将其转换为Uri:
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
UriBuilder uri = new UriBuilder(codeBase);
string path = Uri.UnescapeDataString(uri.Path);
或使用位置:
string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location;
如果只需要目录和入口点,则可以使用以下内容:
var dir = AppDomain.CurrentDomain.BaseDirectory;