Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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# 在给定的url路径中查找zip文件的文件名_C#_File_Url_Zip_File Extension - Fatal编程技术网

C# 在给定的url路径中查找zip文件的文件名

C# 在给定的url路径中查找zip文件的文件名,c#,file,url,zip,file-extension,C#,File,Url,Zip,File Extension,如何使用c从启用目录浏览的url路径查找带有*.zip的文件。 例如: 如果我的url是: 路径由以下文件组成:ex1.htm、ex2.zip、ex.pdf、ex.swf、, 那么如何找到扩展名为*.zip的文件名。 请帮助我如何在URL中找到zip文件的文件名您可以使用GetFileName获取文件名 例如: System.IO.Path.GetFileNamepath 或 您可以尝试从目录中获取以下文件名: var filenames=String.Join,目录。GetFiles@c:\,

如何使用c从启用目录浏览的url路径查找带有*.zip的文件。 例如: 如果我的url是: 路径由以下文件组成:ex1.htm、ex2.zip、ex.pdf、ex.swf、, 那么如何找到扩展名为*.zip的文件名。 请帮助我如何在URL中找到zip文件的文件名

您可以使用GetFileName获取文件名

例如:

System.IO.Path.GetFileNamepath

您可以尝试从目录中获取以下文件名:

var filenames=String.Join,目录。GetFiles@c:\,*.zip.Selectfilename=>Path.GetFileNameWithoutExtensionfilename.ToArray

这适用于在末尾附加文件名的URL/
我将把错误处理留给您/

除非FTP服务器也可用,否则我认为您必须使用HttpWebRequest加载目录列表,然后解析结果以取出标记中的所有HREF

以下是一些示例代码:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                string html = reader.ReadToEnd();
                Console.WriteLine("Parsing {0}", html);
                Regex regex = new Regex("href=\\\"([^\\\"]*)", RegexOptions.IgnoreCase);
                MatchCollection matches = regex.Matches(html);
                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        if (match.Success)
                        {
                            Console.WriteLine("Found {0}", match.Captures[0]);
                        }
                    }
                }
            }
        }

请注意,您获得的href值将与当前目录相对。

根据Michael的建议,我得到了问题的解决方案,如下所示:

string urlpath = "http://www.example.com/folder/"
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlpath);
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
       using (StreamReader reader = new StreamReader(response.GetResponseStream()))
       {
           string html = reader.ReadToEnd();
           Regex regEx = new Regex(@".*/(?<filename>.*?)\.zip");
           MatchCollection matches = regEx.Matches(html);
           if (matches.Count > 0)
           {
                foreach (Match match in matches)
                {
                  if (match.Success)
                  {

                    Console.WriteLine(match.Groups["filename"].Value);
                  }
            }
       }

   }

实际上,我的路径是文件夹路径,我需要此目录路径中存在的zip文件的文件名..如何获取zip文件的文件名?因此您可以尝试:var filenames=String.Join,directory。GetFiles@c:\,*.zip.Selectfilename=>Path.GetFileNameWithoutExtensionfilename.ToArray;函数只返回目录中的文件。但在这里,我使用的是url路径中的文件,而不是目录中的文件。。当我们在Directory.GetFiles.中使用url路径时..它返回异常无效的URI格式..您只需创建一个System.URI对象,并使用IsFile验证它是一个文件,然后使用URI.LocalPath提取文件名。url位置中有很多文件。我必须将Url位置中的所有文件解压缩到本地目录才能找到zip文件。在不将url位置上的所有文件提取到本地路径的情况下,您能推荐其他方法吗?我们不能使用Directory.GetFiles,因为这里使用的是url路径而不是目录。使用Directory.GetFiles时出现以下异常:不支持URI格式。我认为您无法访问web url中的文件。看看我编辑的回答。。我的url路径不包含zip文件。例如:如果我的url是,那么这个文件夹路径中有很多文件…我不知道这个文件夹的文件名..我可以在集合列表中获取这个文件夹中文件的文件名吗?但是我猜不能直接转到网站的文件夹。但是Akhil,我们可以通过在IIS中启用目录浏览来浏览网站的文件夹。这篇文章可能会对您有所帮助,它解释了如何解析url的目录列表。解析是第一步,然后一旦你解析它,你就可以过滤.zip文件,通过“查找文件”,你的意思是下载它吗?如果允许下载,我想我有建议。不,我只需要该文件夹中zip文件的文件名。我想我们可以使用正则表达式在url的HTML文档中找到zip文件。是的,我也有同样的想法
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                string html = reader.ReadToEnd();
                Console.WriteLine("Parsing {0}", html);
                Regex regex = new Regex("href=\\\"([^\\\"]*)", RegexOptions.IgnoreCase);
                MatchCollection matches = regex.Matches(html);
                if (matches.Count > 0)
                {
                    foreach (Match match in matches)
                    {
                        if (match.Success)
                        {
                            Console.WriteLine("Found {0}", match.Captures[0]);
                        }
                    }
                }
            }
        }
string urlpath = "http://www.example.com/folder/"
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlpath);
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    {
       using (StreamReader reader = new StreamReader(response.GetResponseStream()))
       {
           string html = reader.ReadToEnd();
           Regex regEx = new Regex(@".*/(?<filename>.*?)\.zip");
           MatchCollection matches = regEx.Matches(html);
           if (matches.Count > 0)
           {
                foreach (Match match in matches)
                {
                  if (match.Success)
                  {

                    Console.WriteLine(match.Groups["filename"].Value);
                  }
            }
       }

   }