昨天生成网站文件夹和文件的代码
protected void Button3_Click(object sender, EventArgs e)
{
loadNodes(Server.MapPath("~/"));
Response.Write(ifile);
}
void loadNodes(string path)
{
DirectoryInfo mainDir = new DirectoryInfo(path);
try
{
Response.Write("<B>" + mainDir.Name + "</b><br>"); //遍历文件目录 foreach (FileInfo f in mainDir.GetFiles())
{
//增加文件
Response.Write(GetVirPath(f.FullName) + "<br>");
//fileview
ifile++; } foreach (DirectoryInfo d in mainDir.GetDirectories())
{
//递归调用
loadNodes(d.FullName); // loadNodes( d.FullName);
}
}
catch (Exception er)
{ Response.Write(er.ToString());
}
}
string GetVirPath(string FullName)
{ FullName = FullName.Replace(Server.MapPath("~"), "");
FullName = Request.ApplicationPath + FullName.Replace("\\", "/");
return FullName;
}
今天用了发现了一个问题
不是这段代码有错,而是我要取得的是FTP服务器的文件目录
比如:
我有A网,B网
已知B网的FTP用户名和密码
我要在A网用程序得到B网的文件夹和文件路径
所以上面那段代码是放在A网的
而他的功能是得到A网的文件夹和文件路径
而不是得到B网的文件夹和文件目录谢谢 急啊
protected void Button3_Click(object sender, EventArgs e)
{
loadNodes(Server.MapPath("~/"));
Response.Write(ifile);
}
void loadNodes(string path)
{
DirectoryInfo mainDir = new DirectoryInfo(path);
try
{
Response.Write("<B>" + mainDir.Name + "</b><br>"); //遍历文件目录 foreach (FileInfo f in mainDir.GetFiles())
{
//增加文件
Response.Write(GetVirPath(f.FullName) + "<br>");
//fileview
ifile++; } foreach (DirectoryInfo d in mainDir.GetDirectories())
{
//递归调用
loadNodes(d.FullName); // loadNodes( d.FullName);
}
}
catch (Exception er)
{ Response.Write(er.ToString());
}
}
string GetVirPath(string FullName)
{ FullName = FullName.Replace(Server.MapPath("~"), "");
FullName = Request.ApplicationPath + FullName.Replace("\\", "/");
return FullName;
}
今天用了发现了一个问题
不是这段代码有错,而是我要取得的是FTP服务器的文件目录
比如:
我有A网,B网
已知B网的FTP用户名和密码
我要在A网用程序得到B网的文件夹和文件路径
所以上面那段代码是放在A网的
而他的功能是得到A网的文件夹和文件路径
而不是得到B网的文件夹和文件目录谢谢 急啊
2.访问B网中的一个aspx文件或webservice把目录列表下载下来就可.
直接使用socket编程就成了也可以直接调用ftp命令行
慕白兄的好,其实只要放在aspx 在B网下做接口中转就解决了
=============
放在B网,得到B的目录结构,可用ftp一个一个去下载,或者用http一个一个去下载.
void loadNodes(string path)
{
DirectoryInfo mainDir = new DirectoryInfo(path);
try
{
Response.Write("<B>" + mainDir.Name + "</b><br>"); //遍历文件目录 foreach (FileInfo f in mainDir.GetFiles())
{
//增加文件
Response.Write(GetVirPath(f.FullName) + "<br>");
//fileview
ifile++; } foreach (DirectoryInfo d in mainDir.GetDirectories())
{
//递归调用
loadNodes(d.FullName); // loadNodes( d.FullName);
}
}
catch (Exception er)
{ Response.Write(er.ToString());
}
}
这里要怎么改啊
谢谢
=============
放在A网这样写肯定是得不到B网的.
WebRequestMethods.Ftp.ListDirectory
这里用 ListDirectoryDetails得到的文件名如下所示:
12-30-06 12:17AM 283704 a
12-29-06 10:52PM 284760 a.123
12-29-06 10:52PM 191116 a.2342
12-29-06 10:52PM 174104 a.wav
01-10-07 11:56PM <DIR> aaa
这样就可以判断是文件还是文件夹。如果是文件夹,继续进入。做成递归
12-29-06 10:52PM 284760 a.123
12-29-06 10:52PM 191116 a.2342
12-29-06 10:52PM 174104 a.wav
01-10-07 11:56PM <DIR> aaa
一行判断是否有<DIR>有是文件夹没有就是文件
怎么用\t拆分啊。。你说的我不太清楚我想用
s.resplce(" "," ").Split(' ')
这种方法折分不知道你有没有更好的办法
drw-rw-rw- 1 user group 0 Dec 29 11:36 ..
-rw-rw-rw- 1 user group 16388 Dec 29 11:36 Javascript.rar
-rw-rw-rw- 1 user group 2122504 Dec 29 11:32 Yingyi.rar
-rw-rw-rw- 1 user group 30514217 Dec 27 15:41 cnepa2006-12-28.rar
drw-rw-rw- 1 user group 0 Jul 27 14:03 databases
drw-rw-rw- 1 user group 0 Jul 27 14:03 logfiles
-rw-rw-rw- 1 user group 1622 Dec 28 17:17 mydes.cs
drw-rw-rw- 1 user group 0 Aug 12 15:36 others
drw-rw-rw- 1 user group 0 Jan 11 20:14 wwwroot
-rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar我读到的怎么是这个样子的呢
会不会不同服务器有不同啊
谢谢
【100MB 支持ASP/cgi/php 70 RMB/1年 】
【1G空间 支持ASP cgi php 200 RMB/1年 】
【 现在购买1G空间,cn域名只卖25 】
【100M共享1u服务器南京电信托管4300,2U托管4500,全国最低价】
-rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar
最后的lastindexof(" ")可以得出
wwwroot 教程.rar
但是这里如何判断他是不是目录呢
其实是这样的只是多个空格给去掉了
但Jan 11 20:14 这里里面也有空格啊
还有你说各种服务器不同那不就这种办法没用了
如你的
12-30-06 12:17AM 283704 a
12-29-06 10:52PM 284760 a.123
12-29-06 10:52PM 191116 a.2342
12-29-06 10:52PM 174104 a.wav
01-10-07 11:56PM <DIR> aaa
面我的
drw-rw-rw- 1 user group 0 Jan 11 20:14 wwwroot
-rw-rw-rw- 1 user group 28755 Dec 29 11:34 教程.rar
现在是要求只提供 ip user pass
让你用程序把B网的东西下下来不能去操作B网的主机