例如,
string path = @"C:\User\Desktop\Drop\images\";
我只需要@"C:\User\Desktop\Drop\
有没有简单的方法可以做到这一点?
答案 0 :(得分:9)
您可以使用Path
和Directory
类:
DirectoryInfo parentDir = Directory.GetParent(Path.GetDirectoryName(path));
string parent = parentDir.FullName;
请注意,如果路径未以目录分隔符char \
结束,则会得到不同的结果。然后images
将被理解为文件名而不是目录。
您还可以使用Path.GetDirectoryName
string parent = Path.GetDirectoryName(Path.GetDirectoryName(path));
此行为记录在案here:
因为返回的路径不包含DirectorySeparatorChar 或者AltDirectorySeparatorChar,将返回的路径传回 GetDirectoryName方法将导致截断一个文件夹 每次后续调用结果字符串的级别。例如,传递 路径“C:\ Directory \ SubDirectory \ test.txt”进入 GetDirectoryName方法将返回“C:\ Directory \ SubDirectory”。 将该字符串“C:\ Directory \ SubDirectory”传入 GetDirectoryName将生成“C:\ Directory”。
答案 1 :(得分:1)
var parent = "";
If(path.EndsWith(System.IO.Path.DirectorySeparatorChar) || path.EndsWith(System.IO.Path.AltDirectorySeparatorChar))
{
parent = Path.GetDirectoryName(Path.GetDirectoryName(path));
parent = Directory.GetParent(Path.GetDirectoryName(path)).FullName;
}
else
parent = Path.GetDirectoryName(path);
正如我评论的GetDirectoryName是自我折叠它返回路径而没有尾随斜杠 - 允许获取下一个目录。使用Directory.GetParent然后clouse也是有效的。
答案 2 :(得分:1)
简答:)
path = Directory.GetParent(Directory.GetParent(path)).ToString();
答案 3 :(得分:0)
这将返回“C:\ User \ Desktop \ Drop \”,例如除了最后一个子目录之外的所有内容
string path = @"C:\User\Desktop\Drop\images";
string sub = path.Substring(0, path.LastIndexOf(@"\") + 1);
如果您有一个尾部斜杠,则为另一种解决方案:
string path = @"C:\User\Desktop\Drop\images\";
var splitedPath = path.Split('\\');
var output = String.Join(@"\", splitedPath.Take(splitedPath.Length - 2));
答案 4 :(得分:0)
页面底部的示例可能会有所帮助: http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname(v=vs.110).aspx
答案 5 :(得分:0)
using System;
namespace Programs
{
public class Program
{
public static void Main(string[] args)
{
string inputText = @"C:\User\Desktop\Drop\images\";
Console.WriteLine(inputText.Substring(0, 21));
}
}
}
输出:
C:\用户\桌面\掉落\
答案 6 :(得分:0)
使用File或Path类可能有一些简单的方法,但你也可以通过这样做来解决它(注意:未经测试):
string fullPath = "C:\User\Desktop\Drop\images\";
string[] allDirs = fullPath.split(System.IO.Path.PathSeparator);
string lastDir = allDirs[(allDirs.length - 1)];
string secondToLastDir= allDirs[(allDirs.length - 2)];
// etc...