如何从C#中的完整路径获取零件?
我有一个完整的路径,如下所示如何从C#中的完整路径获取零件?,c#,string,directory,C#,String,Directory,我有一个完整的路径,如下所示 C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd 如何从整个部分中提取DTD“部分” 期望输出: C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyG
C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd
如何从整个部分中提取DTD“部分”
期望输出:
C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs
我可以为此使用String
的方法吗?如果是,那么如何取回 对整个路径使用
System.IO.Path.GetDirectoryName()
,或仅对该文件夹的名称使用new DirectoryInfo(Path.Parent.Name
您发布的路径中没有名为“DTDs”的目录。看起来有一个名为“DannyGoXuk.DTDs.xhtml math svg flat.dtd”的文件。,但该路径中的句点(.)不是有效的目录分隔符。您的意思是“DannyGoXuk\DTDs\xhtml math svg flat.dtd” 如果是这种情况,在给定整个新路径的情况下,您希望类似这样的内容返回
DTDs
文件夹中的文件列表:
string path = @"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk\DTDs\xhtml-math-svg-flat.dtd";
string[] files = new DirectoryInfo(path).Parent.GetFiles();
在属性窗口中,我选择构建类型作为嵌入资源 现在我们终于开始了。当您选择“嵌入式资源”时,该项将绑定到可执行程序文件中。再也没有直接的途径了。相反,将构建类型设置为“内容”,并将“复制到输出目录”设置为“始终复制”或“更新时复制”。
System.IO.Path.GetFileName
完整目录路径返回路径的最后一部分,即目录名GetDirectoryName
返回不需要的父目录的整个路径
如果您有一个文件名,并且只需要父目录的名称:
var directoryFullPath = Path.GetDirectoryName(@"C:\DTDs\mydtd.dtd"); // C:\DTDs
var directoryName = Path.GetFileName(directoryFullPath); // DTDs
这将只返回包含该文件的文件夹的名称
为了
这会回来的
system32
我推断这就是您想要的。您可以使用:
System.IO.Path.GetDirectoryName(path);
你可以用
不要直接使用字符串操作。而是使用Path类的
GetDirectoryName
:
System.IO.Path.GetDirectoryName(myPath);
使用FileInfo对象
FileInfo info = new FileInfo(@"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd");
string directoryName = info.Directory.FullName;
文件甚至不必真的存在。
Path.GetDirectory
在指定的路径上返回:
“C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug”
你自己试试吧:
var path = Path.GetDirectoryName(@"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd");
不过,你的问题有点奇怪-没有名为DTDs的目录。编辑:请仔细阅读OP的问题和她所有的评论,然后再往下看。OP的标题问题并不是她想要的。我的回答给了她解决问题所需要的东西。这就是为什么她投票给了答案。是的,如果特别回答标题问题,Joel的回答是正确的。但看完她的评论后,你会发现这并不是她想要的。谢谢 用这个
string strFullPath = @"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd";
string strDirName;
int intLocation, intLength;
intLength = strFullPath.Length;
intLocation = strFullPath.IndexOf("DTDs");
strDirName = strFullPath.Substring(0, intLocation);
textBox2.Text = strDirName;
使用:
您还可以使用从完整文件路径获取目录:
Directory.GetParent(path).FullName
GetDirectoryName(“C:\Mehrdad\Test”)返回“C:\Mehrdad”Joel,你误解了我的意思。在VS2008的解决方案资源管理器中,我在dannyGoXuk prj下创建了一个名为DTDs的文件夹,并将所有文件保存在其中。然后在属性窗口中,我选择构建类型作为嵌入资源。现在,我尝试获取这些文件的完整路径,我获得了上面发布的完整路径。但是我想要目录DTDs的路径。我希望我能够清除..请写出这个例子中你想要的输出。听起来你想要文件名,但你说的是“目录”。或者在有目录的地方应该有一个\。DTDs之后?我在DannyGoXuk项目中添加了一个DTDs目录,其中包含所有文件。路径不应该是C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk\DTDs\xhtml-math-svg-flat.dtd吗?抱歉,现在还不清楚您到底想要什么。上面的字符串(C:\…)是目录名还是文件名?你想要哪一部分,从开始到最后一个反斜杠,从最后一个反斜杠到结束,还是介于两者之间?或者要提取相对路径?GetFileName()将返回“mydtd.dtd”GetFileName,因为目录路径将返回最后一部分。您应该使用目录路径调用它,您可以从GetDirectoryName获得该路径。我在编辑中对此进行了解释。我误解了您在执行两步过程,以为您在对原始字符串调用GetFileName()。不,这没有帮助,我正在从资源中获取文件,这些文件位于DannyGoXuk项目下的DTDs文件夹中。因此,我正在使用foreach循环逐个获取这些文件,并希望获取目录DTDs。但是上面和下面的所有答案都没有帮助。@crazy_itgal:根据您在问题中提到的路径,你到底需要什么作为输出?我得到了这个错误。。无法将类型“System.IO.FileInfo”隐式转换为“System.Reflection.FieldInfo”,因为我正在使用资源中的文件。目录DTDs位于项目DannyGoXuk中。我已将所有资源文件嵌入DTDs目录中。在代码中,我想获取此目录如何操作,这只是我想知道的?谢谢..谢谢Harpo你有点接近我的答案,但这里你有目录分隔符,可以将“System32”作为目录,但在我的例子中没有这样的“/”的东西。然而,我有来自参考资料的文件,这些文件位于DannyGoXuk项目下的DTDs文件夹中。因此,我使用foreach循环逐个获取这些文件,并希望获取目录DTDs。这是DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd给出的。其中xhtml-math-svg-flat.dtd是DannyGoXuk下DTDs目录中的dtd文件谢谢JimDel,但这部分给了我o/p“DTDs.xhtml-math-svg-flat.dtd”。我只是在找DTD。我不希望文件xhtml-math-svg-flat.dtd与它一起使用。请改用此子字符串。。。strDirName=strFullPath.Substring(0,intLocation);将文件放入c:\DTDsFolder\Sources\。。。。你会看到这个脚本崩溃了。。。
var path = Path.GetDirectoryName(@"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd");
string strFullPath = @"C:\Users\Ronny\Desktop\Sources\Danny\kawas\trunk\csharp\ImportME\XukMe\bin\Debug\DannyGoXuk.DTDs.xhtml-math-svg-flat.dtd";
string strDirName;
int intLocation, intLength;
intLength = strFullPath.Length;
intLocation = strFullPath.IndexOf("DTDs");
strDirName = strFullPath.Substring(0, intLocation);
textBox2.Text = strDirName;
string dirName = new DirectoryInfo(fullPath).name;
Directory.GetParent(path).FullName