Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得完整路径?_C# - Fatal编程技术网

C# 如何获得完整路径?

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” 到底该怎么做?我不知道如何将其转换为正则表达式模式 下面是我更详细的问题: 我要做的是创建一个包含两个参数的正则表

总的来说,我试图去掉路径末尾的文件名,并显示路径的其余部分。 例如,此路径: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()所做的。有关所有血淋淋的详细信息,请参阅。