目录
FTP协议能够得到指定文件夹中的文件列表,并进行上传和下载文件
一、连接FTP服务器
首先打开easyFTP(一种FTP软件)
打开后,在Java代码中首先创建FTPClient对象。并使用此对象的login()方法和connect()方法分别设置用户名、密码和连接信息。
ftpClient.connect("主机地址",端口号);
ftpClient.login("用户名", "密码");
二、获取文件列表
通过FTPClient对象的listFiles()方法
此方法返回的是一个FTPFile[ ]对象数组,这个数组中的每一个对象都是一个文件
通过forEach遍历文件的同时能够获取文件创建名称( getName() ),创建时间( getTimestamp() )和文件大小( getSize() ).
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
for(FTPFile file : ftpfiles) {
String fileName = file.getName();
fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");
Date date = file.getTimestamp().getTime();
System.out.println("文件名称:" + fileName);
System.out.println("创建时间:" + format.format(date));
System.out.println("文件大小:" + file.getSize() + "字节");
}
由于通过getTimestamp()方法获得的时间不是我们想要的“年月日”的时间格式,所以通过SimpleDateFormat对象的构造方法,自行设置自己想要的时间输出格式。
三、进入其他文件夹
例如:D:\Temp\Test 若在Test这个文件夹下存在其他文件夹,可以进入到其他的文件夹中
FTPClient对象的changeWorkingDirectory()方法能够进入到其他文件夹,传入的参数为文件夹名称(String类型),此方法返回值为boolean类型。
注:
- 若此方法传入的文件夹名称(AAa)存在,则直接进入访问目标文件夹
- 若AAa文件夹不存在,可以使用FTPClient对象的makeDirectory()方法创建文件夹,参数为要创建的文件夹名称。
boolean isChange = ftpClient.changeWorkingDirectory("AAa");
四、文件上传
(1)、设置文件格式
FTPClient对象的setFileType()方法能够设置文件格式,参数为FTPClient类中定义的,例如FTPClient.BINARY_FILE_TYPE代表二进制文件。
(2)、文件上传
FTPClient对象的storeFile(A,B)方法。
参数A:上传到服务器后的文件名称+后缀
参数B:本地文件的输入流
示例代码:
FileInputStream in = new FileInputStream("D:\\Temp\\Test\\火影.png")
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(System.currentTimeMillis()+".png", in);//in是本地文件的输入流
五、将服务器中的文件下载到本地
和文件上传相比,设置文件格式类型的操作完全一致。
文件下载的具体操作要使用FTPClient对象的retrieveFile(A,B)方法,返回值类型是boolean。
参数A:要下载的服务器端的文件名称
参数B:文件输出流
示例代码如下:
FileOutputStream out = new FileOutputStream("D:\\Temp\\Test\\"+System.currentTimeMillis()+".jpg")
boolean is = ftpClient.retrieveFile("AAa.jpg", out);
注:
输出流中的文件路径:要将服务器下载到本地哪个地方