C# 在c中查找父目录#

C# 在c中查找父目录#,c#,directory,.net-cf-3.5,C#,Directory,.net Cf 3.5,If path=“\ProgramFiles\MobileApp\es gl\a.dll”。我想单独获取“\ProgramFiles\MobileApp\es gl”。只想知道文件a.dll的父目录。c#中有内置的方法吗?我使用的是.net Compact FrameworkSystem.IO.Path.GetDirectoryName(Path) 您可以只使用string类的方法 string path = @"\ProgramFiles\MobileApp\es-gl\a.d

If path=“\ProgramFiles\MobileApp\es gl\a.dll”。我想单独获取“\ProgramFiles\MobileApp\es gl”。只想知道文件a.dll的父目录。c#中有内置的方法吗?我使用的是.net Compact Framework

System.IO.Path.GetDirectoryName(Path)


您可以只使用string类的方法

        string path = @"\ProgramFiles\MobileApp\es-gl\a.dll";
        string newPath = path.Substring(0, path.LastIndexOf('\\'));

我不确定,但我认为紧凑型框架支持
FileInfo
DirectoryInfo

试试这个:

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链接:


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

var file = new FileInfo(@"\ProgramFiles\MobileApp\es-gl\a.dll");
var parent = file.Directory.Parent;

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

        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\

这不适用于紧凑型框架。我有Compact Framework的解决方案吗?@weston我想你不能在Compact Framework中使用Path.GetDirectoryName。@Badhravikumar它在.NET Compact Framework 3.5、2.0和1.0版本中受支持-请检查我答案中的MSDN链接。至少在我的ftp程序中使用
System.IO.Path.directorySeportorchar
@weston-这是行不通的。我必须处理本地目录拆分器(\)和远程ftp文件夹拆分器(/)。因此有了splitter参数。至少使用“\\”或@“\”然后:-)那么我认为您将文件路径与URI混合在一起,并将它们都视为字符串。考虑使用<代码> URI 类进行FTP地址,并将此方法作为扩展方法添加到该地址中。并使用普通的
System.IO.Path.GetDirectoryName(Path)
执行文件路径任务。在我编写ftp程序时,我不知道System.Uri类的好处。现在,我觉得Uri确实是一种方式,因为它消除了解析的负担
        public static string ExtractFolderFromPath(string fileName, string pathSeparator, bool includeSeparatorAtEnd)
        {
            int pos = fileName.LastIndexOf(pathSeparator);
            return fileName.Substring(0,(includeSeparatorAtEnd ? pos+1 : pos));
        }