C# 在给定的url路径中查找zip文件的文件名
如何使用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/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:\,
我将把错误处理留给您/除非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);
}
}
}
}