C# 如何获得完整路径?
总的来说,我试图去掉路径末尾的文件名,并显示路径的其余部分。 例如,此路径:C:\Users\Documents\Development\testing\11.0.25.10\AUW\u 11052\u 0\u X.pts 我想去掉“AUW_11052_0_X.pts”文件,只显示“C:\Users\Documents\Development\testing\11.0.25.10” 到底该怎么做?我不知道如何将其转换为正则表达式模式 下面是我更详细的问题: 我要做的是创建一个包含两个参数的正则表达式函数,原始路径然后是文件名(程序在某个点循环通过一个列表,其中存储了所有文件,并从中获取文件名)。我要创建一个正则表达式函数,该函数在最后一个“\”之后捕获任何内容并将其与文件名参数进行比较。如果确实匹配,则去掉文件名,如果不匹配,则保留它。我的问题是如何做一个正则表达式模式,在我不知道如何做的最后一个“\”字符之后找到任何东西C# 如何获得完整路径?,c#,C#,总的来说,我试图去掉路径末尾的文件名,并显示路径的其余部分。 例如,此路径:C:\Users\Documents\Development\testing\11.0.25.10\AUW\u 11052\u 0\u X.pts 我想去掉“AUW_11052_0_X.pts”文件,只显示“C:\Users\Documents\Development\testing\11.0.25.10” 到底该怎么做?我不知道如何将其转换为正则表达式模式 下面是我更详细的问题: 我要做的是创建一个包含两个参数的正则表
答:我找到了答案,模式是
^(.[\\/])
这将抓取到您要查找的最后一个“\”Path.GetDirectoryName()为什么不能这样做
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace directorysearch
{
class Program
{
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo(@"c:\users\documents\development\testing");
FileInfo[] files = null;
DirectoryInfo[] dirs = null;
dirs = di.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
files = dir.GetFiles("*", SearchOption.TopDirectoryOnly);
}
}
}
}
这允许您输入基本路径(c:\users\documents\development\testing),然后操作该路径下的每个目录,然后操作每个目录下的每个文件?事实上,Regex在这方面做得太过分了。按照@SLaks的建议去做。我这么做了,可惜没有得到我想要的正确结果。由于我在目录和文件中循环,它会生成“C:\Users\Documents\Development\testing\”,有时还会生成“C:\Users\Documents\Development\testing\11.0.25.10\”。这就是为什么我想用正则表达式检查它。@user2619395:更准确地说明您的问题。听起来你只想在路径不是以斜杠结尾的情况下调用它。我的问题是我正在将一个源文件复制到一个目录文件。在代码编写过程中的某个时刻,我只需要文件夹所在的目录。例如“C:\Users\Documents\Development\testing\11.0.25.10\”。但是,在某些时候,它确实会在“C:\Users\Documents\Development\testing\11.0.25.10”目录中循环,因为它会遍历原始文件夹\11.0.25.10\及其子目录。长话短说,我只希望任何文件名都从路径中删除,因为在某些情况下都会访问路径。GetDirectoryName()将留给我“C:\Users\Documents\Development\testing\”而不是“C:\Users\Documents\Development\testing\11.0.25.10\”长话短说,我只想把任何文件名从路径上切掉”-这正是
path.GetDirectoryName()所做的。有关所有血淋淋的详细信息,请参阅。