如何在使用 c# 启用目录浏览的 url 路径中查找带有“*.zip”的文件。例如:如果我的网址是:http ://www.example.com/myfolder/myfiles 并且路径由文件组成:ex1.htm,ex2.zip,ex.pdf,ex.swf,那么我该如何找到扩展名为 *.zip 的文件名。请帮助我如何在 URL 中找到 zip 文件的文件名
问问题
3214 次
4 回答
1
除非 FTP 服务器也可用,否则我认为您将不得不求助于加载目录列表HttpWebRequest
,然后解析结果以提取 <A> 标记中的所有 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 值将与当前目录相关。
于 2012-07-06T06:53:26.380 回答
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);
}
}
}
}
于 2012-07-06T09:21:54.173 回答
0
string[] s = Directory.GetFiles(path);
int i = 0;
while (i < s.Length)
{
if (s[i].Substring((s[i].IndexOf(".") + 1), 3).Equals("zip"))
{
Response.Write(s[i].ToString());
i = i + 1;
}
}
尝试这个。
编辑
int slashIndex = url.lastIndexOf('/');
int dotIndex = url.lastIndexOf('.zip', slashIndex);
String filenameWithoutExtension;
if (dotIndex == -1)
{
filenameWithoutExtension = url.substring(slashIndex + 1);
}
else
{
filenameWithoutExtension = url.substring(slashIndex + 1, dotIndex);
}
这适用于最后附加文件名的 URL/我将把错误处理留给你/
于 2012-07-06T05:47:15.190 回答
-1
您可以使用GetFileName
获取文件名。
例如:
System.IO.Path.GetFileName(path);
或者
您可以尝试以下从目录中获取文件名:
var filenames = String.Join(", ", Directory.GetFiles(@"c:\", "*.zip").Select(filename => Path.GetFileNameWithoutExtension(filename)).ToArray());
于 2012-07-06T05:36:18.747 回答