listfiles方法ftp
‘壹’ 用java编写一个程序实现输出我的电脑上建立的ftp服务器根目录下的所有文件名
使用File类中方法就可以实现
File[] listFiles() 返回目录下所有的文件
File file=new File("你的ftp的根路径");
File files[]=file.listFiles();
for(int i=0;i<files.length;i++){
System.out.println(files[i].getName() );
}
如果要获取所有的文件和文件夹可以使用String[] list()方法。返回的是String类型的数组,其中所有文件和文件夹的相对路径表示。
补充---
如果那样的话那么就需要在你的ftp服务器上做一个socket服务端,你通过一个客户端连接上去。然后服务器端将获取的文件列表数组传递给你,就可以了。如果想直接获取别人的机器的文件列表是很难的,基本上是不可能的,当然是出于安全的考虑
‘贰’ 如何 用Java 实现 获取FTP服务器上的所有文件名,已知FTP的密码,用户名!远程获取!
public void ftpJdomFile(String dir) throws FileNotFoundException, IOException{
//创立根节点
// 下面这个方法是列出指定目录下的所有文件和文件夹
List dirslist=Arrays.asList(new File(dir).listFiles());
for (Iterator i = dirslist.iterator(); i.hasNext();) {
// System.out.println(i.next()); // line 1
String s=i.next().toString();
if (new File(s).isFile()) {
System.out.println(s+"-文件");
}
if (new File(s).isDirectory()) {
System.out.println(s+"++++++++文件夹");
ftpJdomFile(s);
}
}
}
‘叁’ java遍历ftp文件夹时,在FTPFile ff[] = ftpClient.listFiles()处一直提示空指针异常错误,是怎么回事。
boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();
‘肆’ Ftp.listFiles()报错NoSuchMethodError,如何解决
java.net.SocketException: Software caused connection abort: recv failed
原因:服务端将连接关闭了(可能发生了异常),但客户端还在接收数据。
总结产生原因,在服务端/客户端单方面关闭连接的情况下,另一方依然以为
tcp连接仍然建立,试图读取对方的响应数据,导致出现
Software caused connection abort: recv failed的异常.
因此在receive数据之前,要先判断连接状态.
通过inputstream的available()方法来判断,是否有响应结果.
如果available()的返回值为0,说明没有响应数据,可能是对方已经断开连接,
如果available()的返回值大于0,说明有响应数据.
另外值得注意的是available()返回的值是非堵塞的,可以被多个线程访问
‘伍’ java使用FTP下载文件,下载失败,中文乱码问题
实现功能描述:通过数据库查找图片名称集合,下载并保存至本地文件夹。
功能实现中遇到问题:更改FTP工作目录与下载文件失败。
问题一:FTP工作目录更改后,下载文件路径设置简化。
将工作目录切换至FTP的“part”目录,“partftpClient.changeWorkingDirectory("/part/");”,之后下载文件路径仅需提供文件名。
问题二:文件下载失败,文件名乱码。
在“FTPFile[] remoteFiles = ftpClient.listFiles();”执行时,获取文件名乱码。
原因:FTP服务端与客户端编码格式不一致。查找乱码文件并使用在线工具恢复,确认客户端使用GBK编码,显示格式为iso-8859-1。
解决步骤:调整FTP客户端编码格式为GBK,乱码问题解决。
新问题:下载文件失败,文件大小为零,显示格式损坏。
排查FTP服务端用户权限、能否ping通服务器地址、取消文件只读属性。确认文件地址错误,编码格式影响文件读取。
定位问题:中文乱码导致FTP客户端读取文件错误。
解决方法:取消FTP客户端编码格式设置,通过修改循环内部逻辑下载文件,获取文件名时进行转码处理。
最终结果:成功下载文件并保存至本地,问题解决。
‘陆’ FTPClient类的listFile()卡住了,啥原因啊
这个方法要和ftp服务器通讯,执行list命令,因此如果网络不通、服务器没登陆等都可能导致调用阻塞、出错等,你手工ftp登陆服务器试一下。
‘柒’ 使用java通过ftp下载文件,ftpClient.listFiles获取不到当前路径下的文件
File dir=new File(".");//当前路径是项目文件夹,是src外面而不是里面
File[]files=dir.listFiles(new FileFilter(){
@Override
public boolean accept(File arg0) {
return arg0.isFile();
}
});
System.out.println("有文件"+files.length+"个");