概要
在实现网络编程时,需要了解很多协议,FTP协议就是很重要的一个,这篇文章主要写对于Java在基于FTP协议实现网络编程时的一些简单操作即工具类的一些简单应用方式,例如,文件的上传下载,寻找目录和创建等。
实现过程(操作代码和相关解释)
首先你要知道ftp的ip,路径,端口,有操作权限的账号和密码
- 导入jar包
导入commons-net
下载commons-nethttps://mvnrepository.com/artifact/commons-net/commons-net/3.6或者
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
- 连接FTP服务器
String ip = "192.168.59.215";
int port = 21;
String userName = "admin";
String passWord = "123456";
// 创建基于FTP协议访问文件客户端的对象
FTPClient client = new FTPClient();
try {
client.connect(ip,21);
client.login(userName,passWord);
} catch (SocketException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
- 获取当前文件夹目录
// 设置日期格式
SimpleDateFormat fmt = new SimpleDateFormat("yyyy年MM月dd日");
// 获取当前文件夹目录中的所有文件
FTPFile[] ftpFileList = client.listFiles();
for (FTPFile ftpFile : ftpFileList) {
// 文件名称中包含中文乱码
String fileName = ftpFile.getName();
/**
* FTP协议里面,规定文件名编码为iso-8859-1
* gb2312--编码集
**/
fileName = new String(fileName.getBytes("iso-8859-1"),"gb2312");
System.out.println("文件名称:"+fileName);
Date createDate = ftpFile.getTimestamp().getTime();
System.out.println("文件创建时间:"+fmt.format(createDate));
System.out.println("文件大小:"+ftpFile.getSize());
}
- 查找和创建文件夹
String fileName = "FJQ_shuaizhao";
// 创建并切换至个人
Boolean ischange = ftpClient.changeWorkingDirectory(fileName);
// 判断文件存在与否
if (!ischange) {
// 创建文件夹
ftpClient.makeDirectory(fileName);
// 切换文件夹
ftpClient.changeWorkingDirectory(fileName);
}else{
ftpClient.changeWorkingDirectory(fileName);
}
- 文件上传
try(FileInputStream in = new FileInputStream("本地文件上传路径"))
{
// 文件上传
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 存文件
ftpClient.storeFile(System.currentTimeMillis()+".jpg", in);
}
- 文件下载
try(FileOutputStream out = new FileOutputStream("本地文件保存路径"))
{
// 下载指定格式文件-二进制格式BINARY_FILE_TYPE
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 下载文件
Boolean isRetrieve = ftpClient.retrieveFile("fjq.jpg", out);
System.out.println("下载成功?"+isRetrieve);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
- 关闭连接
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
技术名词解释
FTP(File Transfer Protocol):是应用层的一个文件传输协议 。主要作用是在服务器和客户端之间实现文件的传输和共享。FTP协议运行在TCP连接上,保证了文件传输的可靠性。在传输时,传输双方的操作系统、磁盘文件系统类型可以不同。
FTP协议:允许TCP/IP网络上的两台计算机之间进行文件传输。而FTP服务是基于FTP协议的文件传输服务。工作时,一台计算机上运行FTP客户端应用程序,另一台计算机上需要运行FTP服务器端程序。只有拥有了FTP服务,客户端才能进行文件传输。
小结
基于Java和FTP的网络编程,一些简单的操作,对于初学者来说有一定帮助。
由于本人偷懒,这会不想写了,内容还有部分想补充,看到本博客,请让我补充内容,谢谢!