0

如果路径 = "\ProgramFiles\MobileApp\es-gl\a.dll"。我想单独获得“\ProgramFiles\MobileApp\es-gl”。只想知道文件a.dll的父目录。c#中是否有任何内置方法?我正在使用 .net Compact Framework

4

6 回答 6

7

System.IO.Path.GetDirectoryName(path)

于 2012-08-08T08:50:44.383 回答
3

我还需要这样一个功能来无缝查找文件夹的父目录。所以我自己创建了一个:

        public static string ExtractFolderFromPath(string fileName, string pathSeparator, bool includeSeparatorAtEnd)
        {
            int pos = fileName.LastIndexOf(pathSeparator);
            return fileName.Substring(0,(includeSeparatorAtEnd ? pos+1 : pos));
        }

只需发送 pathSeparator ("\" 用于 windows 和 "/" 用于类 unix 路径)。如果要在末尾包含分隔符,请将最后一个参数设置为 true。例如:C:\foo\

于 2012-08-08T09:01:39.107 回答
2

FileInfo(System.IO 命名空间)上有一个父目录。示例代码:

var file = new FileInfo(@"\ProgramFiles\MobileApp\es-gl\a.dll");
var parent = file.Directory.Parent;
于 2012-08-08T09:00:30.300 回答
2

我不确定,但我认为Compact Framework 支持FileInfoDirectoryInfo类。

尝试这个:

FileInfo myFile = new FileInfo("\ProgramFiles\MobileApp\es-gl\a.dll");
string parentDirectory = myFile.Directory.Name;

根据 MSDN 文档,您也可以这样做:

FileInfo myFile = new FileInfo("\ProgramFiles\MobileApp\es-gl\a.dll");
string parentDirectory = myFile.DirectoryName;

查看这些 MSDN 链接以获取更多信息:

http://msdn.microsoft.com/en-us/library/system.io.fileinfo_members(v=vs.71)

http://msdn.microsoft.com/en-us/library/system.io.fileinfo.directory(v=vs.71)

于 2012-08-08T08:57:13.317 回答
0
var directory = Path.GetDirectoryName(@"c:\some\path\to\a\file.txt");
// returns "c:\some\path\to\a"

MSDN

于 2012-08-08T08:50:53.167 回答
0

您可以只使用字符串类的方法。

        string path = @"\ProgramFiles\MobileApp\es-gl\a.dll";
        string newPath = path.Substring(0, path.LastIndexOf('\\'));
于 2012-08-08T08:55:10.607 回答