如何使用c#从启用目录浏览的URL路径中查找带有“* .zip”的文件。 对于Eg: 如果我的网址是:http://www.example.com/myfolder/myfiles 并且路径由文件组成:ex1.htm,ex2.zip,ex.pdf,ex.swf, 那我怎么能找到扩展名为* .zip的文件名。 请帮我看看如何在URL
中找到zip文件的文件名答案 0 :(得分: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值将相对于当前目录。
答案 1 :(得分: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 我将把错误处理留给你/
答案 2 :(得分: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);
}
}
}
}
答案 3 :(得分:-1)
您可以使用GetFileName
获取文件名。
例如:
System.IO.Path.GetFileName(path);
OR
您可以尝试从目录中获取文件名:
var filenames = String.Join(", ", Directory.GetFiles(@"c:\", "*.zip").Select(filename => Path.GetFileNameWithoutExtension(filename)).ToArray());