FTP简介
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
实现代码如下:
// 创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient = new FTPClient();
try {
// 第一步:链接ftp服务器并验证用户名密码
ftpClient.connect("192.168.254.147",21);
ftpClient.login("lyj", "123");
// 第二步:
boolean isChange = ftpClient.changeWorkingDirectory("luyujiang");
if(isChange) {
// 切换成功,显示luyujiang目录下的所有文件
SimpleDateFormat fmt = new SimpleDateFormat("yyyy年mm月dd日");
// 获取当前目录中的所有文件
FTPFile[] ftpFileList = ftpClient.listFiles();
for(FTPFile file : ftpFileList) {
// 文件名称中包含中文乱码
String fileName = file.getName();
fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");
Date createdData = file.getTimestamp().getTime();
System.out.println("文件名称:" + fileName);
System.out.println("创建时间:" + fmt.format(createdData));
System.out.println("文件大小:" + file.getSize());
}
}else {
// 创建指定目录
ftpClient.makeDirectory("luyujiang");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
通过FTP上传文件的实现代码如下:
// 创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient = new FTPClient();
try(FileInputStream in = new FileInputStream("e://test//test//fjq.jpg")){
// 第一步:链接ftp服务器并验证用户名密码
ftpClient.connect("192.168.254.123",21);
ftpClient.login("admin", "123456");
// 第二步:
// 切换至个人目录
boolean isChange = ftpClient.changeWorkingDirectory("luyujiang");
if(!isChange) {
// 创建个人目录
ftpClient.makeDirectory("luyujiang");
// 切换
ftpClient.changeWorkingDirectory("luyujiang");
}
System.out.println(ftpClient.printWorkingDirectory());
// 第三步:文件上传
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置文件类型
// 存文件只FTP服务器
// 参数1:FTP文件的保存名称
// 参数2:本地文件输入流
boolean isStore = ftpClient.storeFile(System.currentTimeMillis() + ".jpg", in);
System.out.println("文件上传成功?" + isStore);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 断开连接
try{
ftpClient.disconnect();
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
ftpClient = null;
}
}
通过FTP下载文件的实现代码如下:
// 创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient = new FTPClient();
try(FileOutputStream out = new FileOutputStream("e://test//test//download//" +
System.currentTimeMillis() + ".jpg")){
// 第一步:链接ftp服务器并验证用户名密码
ftpClient.connect("192.168.254.172",21);
ftpClient.login("Fadmin", "111111");
System.out.println(ftpClient);
// 第二步:切换至个人目录
boolean isChange = ftpClient.changeWorkingDirectory("FJQ");
System.out.println(isChange);
// 第三步:下载文件
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 文件类型
boolean isRetrieve = ftpClient.retrieveFile("tt.jpg", out);
System.out.println("下载成功?" + isRetrieve);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// 断开连接
try{
ftpClient.disconnect();
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
ftpClient = null;
}
}