如何从文件路径获取目录(不包括根目录和文件名)

发布于 2024-12-09 22:56:12 字数 175 浏览 0 评论 0原文

我有一个文件路径“C:\hello\hi\dotnet\abc.txt”。我只想要路径中的目录。

预期输出:

hello
hi
dotnet

我已经使用了 Path.DirectorySeparatorChar 但它不起作用。所以请帮助我解决这个问题。

I have a filepath say "C:\hello\hi\dotnet\abc.txt". I just want the directories from the path.

Expected Output :

hello
hi
dotnet

I have used Path.DirectorySeparatorChar but it doesn't work.So help me out to solve this problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

童话里做英雄 2024-12-16 22:56:12

使用(根据评论进行编辑

string YourFilePath = @"C:\hello\hi\dotnet\abc.txt";
string[] YourResult = Path.GetDirectoryName (YourFilePath).Split (new char[] {Path.DirectorySeparatorChar}).Skip(1).ToArray();

这就是结果:

YourResult[0] 包含 hello
YourResult[1] 包含 hi
YourResult[2] 包含 dotnet

有关 MSDN 参考,请参阅:

use (EDIT as per comments)

string YourFilePath = @"C:\hello\hi\dotnet\abc.txt";
string[] YourResult = Path.GetDirectoryName (YourFilePath).Split (new char[] {Path.DirectorySeparatorChar}).Skip(1).ToArray();

And this is the result:

YourResult[0] contains hello
YourResult[1] contains hi
YourResult[2] contains dotnet

For MSDN references see:

风柔一江水 2024-12-16 22:56:12

使用 string.Split 并忽略数组中的第一个和最后一个项目怎么样?

How about using string.Split and ignore the first and last items in the array?

半城柳色半声笛 2024-12-16 22:56:12

怎么样:-

string filename = @"C:\hello\hi\dotnet\abc.txt";
string dirName = Path.GetDirectoryName(filename);   // C:\hello\hi\dotnet
string pathRoot = Path.GetPathRoot(dirName);        // C:\
string result = dirName.Substring(pathRoot.Length); // hello\hi\dotnet

How about: -

string filename = @"C:\hello\hi\dotnet\abc.txt";
string dirName = Path.GetDirectoryName(filename);   // C:\hello\hi\dotnet
string pathRoot = Path.GetPathRoot(dirName);        // C:\
string result = dirName.Substring(pathRoot.Length); // hello\hi\dotnet
栩栩如生 2024-12-16 22:56:12

您可以使用此功能

IEnumerable<string> GetDirectories(string path)
{                        
    DirectoryInfo di = new DirectoryInfo(path);

    yield return di.Name;
    if (di.Parent == null)
       yield break;
    foreach (var dir in GetDirectories(di.Parent.FullName))
    {
       yield return dir;
    }           
}

string path = Assembly.GetExecutingAssembly().Location;
foreach(var dir in GetDirectories(path).Reverse())
      Console.WriteLine(dir);

You can use this function

IEnumerable<string> GetDirectories(string path)
{                        
    DirectoryInfo di = new DirectoryInfo(path);

    yield return di.Name;
    if (di.Parent == null)
       yield break;
    foreach (var dir in GetDirectories(di.Parent.FullName))
    {
       yield return dir;
    }           
}

using:

string path = Assembly.GetExecutingAssembly().Location;
foreach(var dir in GetDirectories(path).Reverse())
      Console.WriteLine(dir);
从来不烧饼 2024-12-16 22:56:12
foreach (string s in System.IO.Path.GetDirectoryName (path).Split(System.IO.Path.DirectorySeparatorChar).Skip(1))
{
   //output
}
foreach (string s in System.IO.Path.GetDirectoryName (path).Split(System.IO.Path.DirectorySeparatorChar).Skip(1))
{
   //output
}
姜生凉生 2024-12-16 22:56:12

你可以做

string filePath="C:\\DocumentsAndSettings\\Users\\Xyz\\Downloads\\abc.txt";
filePath=Path.GetFullPath(filePath);
var split =filePath.Split('\\');
var sp = split.Take(split.Length - 1);
foreach ( var st in sp)
{
     Console.WriteLine(st);
}

You Can Do

string filePath="C:\\DocumentsAndSettings\\Users\\Xyz\\Downloads\\abc.txt";
filePath=Path.GetFullPath(filePath);
var split =filePath.Split('\\');
var sp = split.Take(split.Length - 1);
foreach ( var st in sp)
{
     Console.WriteLine(st);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文