URLConnection FTP列表文件

URL url = new URL("ftp://user:pass@ftp.example.com/thefolder/"); URLConnection connection = url.openConnection(); ... // List files in folder... 

使用类似上面的内容,我想知道如何获取文件夹’thefolder’中的文件列表?


嗨,大家好,

继这个原始问题之后,我将这个简单的FTP连接放在一起,这种连接都很有效。 它可以查看/ live / conf / location中的所有文件,并将它们全部复制到local / conf / location。 唯一的问题是,它正在复制文件,但没有内容。它们都是0KB而且是空的!

任何人都可以看到任何明显的复制文件名但不是文件内容。

干杯

KPS

 try { FTPClient ftp = new FTPClient(); ftp.connect("000.000.000.000"); ftp.login("USER", "PASSWORD"); ftp.enterLocalPassiveMode(); ftp.setFileType(FTP.BINARY_FILE_TYPE); FTPFile[] files = ftp.listFiles("/live/conf/"); for (int i=0; i < files.length; i++) { if (files[i].getName().contains(".csv")) { String remoteFile1 = files[i].getName(); File downloadFile1 = new File("/var/local/import/conf/"+files[i].getName()); OutputStream outputStream1 = new BufferedOutputStream(new FileOutputStream(downloadFile1)); ftp.retrieveFile(remoteFile1, outputStream1); outputStream1.close(); } } ftp.disconnect(); } catch (SocketException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } 

Java SE URLConnection对于从FTP主机检索文件列表的工作是不可或缺的。 至于FTP,它基本上只支持FTP getput命令(检索或上传文件)。 它不支持您基本上寻找的FTP ls命令(列表文件),更不用说许多其他命令了。

您需要查找支持FTP ls命令的第三方库(以及更多)。 常用的是Apache Commons Net FtpClient 。 在其javadoc中演示了如何发出ls

 FTPClient f = new FTPClient(); f.connect(server); f.login(username, password); FTPFile[] files = f.listFiles(directory); 

您可以使用Apache commons FTPClient

这将允许您使用…调用listFiles

 public static void main(String[] args) throws IOException { FTPClient client = new FTPClient(); client.connect("c64.rulez.org"); client.enterLocalPassiveMode(); client.login("anonymous", ""); FTPFile[] files = client.listFiles("/pub"); for (FTPFile file : files) { System.out.println(file.getName()); } 

查看我找到的这门课程。 这对你来说很有帮助。 nsftools.com上的课程

示例是:

 FTPConnection ftpConnect = new FTPConnection(); ftpConnect.connect("ftp.example.com"); ftpConnect.login("user","pass"); System.out.println(ftpConnect.listFiles());