java怎样获取ftp目录下的所有子文件名

时间:2021-08-20 14:34:28
ftp连接是成功的,我用的是commons-net-ftp的jar包。

public void List(String pathName) throws IOException{
String directory = pathName;
//更换目录到当前目录
ftp.changeWorkingDirectory(directory);
FTPFile[] files = ftp.listFiles();
System.out.println(directory);
for(FTPFile file:files){
System.out.println(11);/////////这个11总是输出不了
if(file.isFile()){
arFiles.add(file.getName());
}
}
}

////arFiles中一直是空值

19 个解决方案

#1


代码中的代码ftp指的是什么?
是ftp的根目录还是一个ftp对象?
如果是ftp对象的话获取不到的话就很正常了。。

#2


public FTPClient ftp;是对象

#3


那应该怎么处理这个问题。

#4


ftp.changeWorkingDirectory(directory);
我觉得这个方法是不是就把ftp的根目录确定了,然后使用FTPFile[] files = ftp.listFiles();获取目录下的文件,不是这么一回事情吗?

#5


ftp是什么对象?

#6


ftp是根目录,ftp.changeWorkingDirectory(directory);这个就是确定根目录的。

#7


我这是查询D:\\下的所有文件 不知道能不能帮到你!
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建File对象
File file = new File("d:\\");
// 使用递归方法做
dg(file);
}

private static void dg(File fl) {
// TODO Auto-generated method stub
// 创建file数组用来存储数据
File[] filArr = fl.listFiles();
// 判断FiLe数组不能为空
if (filArr != null) {
// 使用for遍历
for (File f : filArr) {
// 如果是文件夹 就递归
if (f.isDirectory()) {
// 递归
dg(f);
} else if (f.isFile()) {

System.out.println(f.getAbsolutePath());
}
}
}
}

#8


引用 4 楼 wuyuedetianpp 的回复:
ftp.changeWorkingDirectory(directory);
我觉得这个方法是不是就把ftp的根目录确定了,然后使用FTPFile[] files = ftp.listFiles();获取目录下的文件,不是这么一回事情吗?

public FTPClient ftp;是对象的话你找找方法,应该有一个ftp对象获取主目录的方法。

FTPFile[] files = ftp.listFiles();
这里的这个ftp我感觉应该代指的是主目录才对。

#9


你先看看登陆的用户有没有权限访问目录中的文件,如果只是为了获取目录下的文件名可以这样:
ftp.listNames();遍历查询;
当然你如果要用ftp.listFiles();就要截取字符串了,每一行文件名前面的长度是固定的:
-rw-rw-rw-   1 ftp      ftp        52068 Aug 21  2012 web.xml

#10


程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。

#11


引用 10 楼 wuyuedetianpp 的回复:
程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。

我也遇到你这样的问题,改了JDK版本也没有解决,请帮忙指导一下呗

#12


引用 10 楼 wuyuedetianpp 的回复:
程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。


确实,前面几楼都一直没有看清你的原帖,而在那里瞎出主意

#13


该回复于2013-05-25 10:41:49被管理员删除

#14


我也是同样的问题,设置了路径之后,不管是文件名还是文件列表都获取不到,楼主有什么好的解决方法么?

#15


我也遇到了,谢谢楼主

#16


我的不是jre 造成的,也遇到相同的问题,楼主怎么破?

#17


卡两天了,还没出来

#18


是在什么系统环境下的?

#19


//linux
ftpClient.enterRemotePassiveMode();

//windows
ftpClient.enterLocalPassiveMode();

我是因为这个模式设置才出现这种情况的

#1


代码中的代码ftp指的是什么?
是ftp的根目录还是一个ftp对象?
如果是ftp对象的话获取不到的话就很正常了。。

#2


public FTPClient ftp;是对象

#3


那应该怎么处理这个问题。

#4


ftp.changeWorkingDirectory(directory);
我觉得这个方法是不是就把ftp的根目录确定了,然后使用FTPFile[] files = ftp.listFiles();获取目录下的文件,不是这么一回事情吗?

#5


ftp是什么对象?

#6


ftp是根目录,ftp.changeWorkingDirectory(directory);这个就是确定根目录的。

#7


我这是查询D:\\下的所有文件 不知道能不能帮到你!
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建File对象
File file = new File("d:\\");
// 使用递归方法做
dg(file);
}

private static void dg(File fl) {
// TODO Auto-generated method stub
// 创建file数组用来存储数据
File[] filArr = fl.listFiles();
// 判断FiLe数组不能为空
if (filArr != null) {
// 使用for遍历
for (File f : filArr) {
// 如果是文件夹 就递归
if (f.isDirectory()) {
// 递归
dg(f);
} else if (f.isFile()) {

System.out.println(f.getAbsolutePath());
}
}
}
}

#8


引用 4 楼 wuyuedetianpp 的回复:
ftp.changeWorkingDirectory(directory);
我觉得这个方法是不是就把ftp的根目录确定了,然后使用FTPFile[] files = ftp.listFiles();获取目录下的文件,不是这么一回事情吗?

public FTPClient ftp;是对象的话你找找方法,应该有一个ftp对象获取主目录的方法。

FTPFile[] files = ftp.listFiles();
这里的这个ftp我感觉应该代指的是主目录才对。

#9


你先看看登陆的用户有没有权限访问目录中的文件,如果只是为了获取目录下的文件名可以这样:
ftp.listNames();遍历查询;
当然你如果要用ftp.listFiles();就要截取字符串了,每一行文件名前面的长度是固定的:
-rw-rw-rw-   1 ftp      ftp        52068 Aug 21  2012 web.xml

#10


程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。

#11


引用 10 楼 wuyuedetianpp 的回复:
程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。

我也遇到你这样的问题,改了JDK版本也没有解决,请帮忙指导一下呗

#12


引用 10 楼 wuyuedetianpp 的回复:
程序没有问题,是自己的jdk的问题,不能使用eclipse自带的jre。要使用外部JDK。已经解决。


确实,前面几楼都一直没有看清你的原帖,而在那里瞎出主意

#13


该回复于2013-05-25 10:41:49被管理员删除

#14


我也是同样的问题,设置了路径之后,不管是文件名还是文件列表都获取不到,楼主有什么好的解决方法么?

#15


我也遇到了,谢谢楼主

#16


我的不是jre 造成的,也遇到相同的问题,楼主怎么破?

#17


卡两天了,还没出来

#18


是在什么系统环境下的?

#19


//linux
ftpClient.enterRemotePassiveMode();

//windows
ftpClient.enterLocalPassiveMode();

我是因为这个模式设置才出现这种情况的

#20