FTP是一个文件传输协议,可以用于互联网双向传输,控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间。在JAVA中我们可以通过FTPClient来利用FTP协议进行文件传输。
首先,我们需要使用一个FTP服务器软件来设置一个用户,在成功连接到FTP服务器并验证身份后读取指定目录下的文件内容。
FTPClient ftpClient=new FTPClient();
try {
//1.连接FTP服务器并验证用户名密码
ftpClient.connect("192.168.254.155",21);
ftpClient.login("gx", "0000");
//2.切换目录
boolean isChange=ftpClient.changeWorkingDirectory("gx");
if(isChange) {
//切换成功:获取当前目录中的所有文件
FTPFile[] ftpFileList=ftpClient.listFiles();
//对日期进行格式化
SimpleDateFormat fmt=new SimpleDateFormat("yyyy年MM月dd日");
for (FTPFile ftpFile : ftpFileList) {
String fileName=ftpFile.getName();
//处理中文名乱码
fileName=new String(fileName.getBytes("iso-8859-1"),"gb2312");
System.out.println("文件名称:"+fileName);
Date date=ftpFile.getTimestamp().getTime();
System.out.println("创建时间:"+fmt.format(date));
System.out.println("文件大小:"+ftpFile.getSize()+"字节");
}
}else {
//切换失败,创建指定目录
ftpClient.makeDirectory("gx");
}
} catch (IOException e) {
e.printStackTrace();
}
能够读取到指定目录,就可以对其进行上传(代码如下:)
//基于FTP协议的文件上传
//创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient=new FTPClient();
try (InputStream in=new FileInputStream("C:\\Users\\GX\\Pictures\\Saved Pictures\\微信图片_20230707163804.jpg")){
//1.进入FTP服务器并验证用户名和密码
ftpClient.connect("192.168.254.148",21);
ftpClient.login("spp", "123");
//2.切换到具体的目录
boolean isChange=ftpClient.changeWorkingDirectory("gx");
if(!isChange) {
//创建指定目录
ftpClient.makeDirectory("gx");
//切换
ftpClient.changeWorkingDirectory("gx");
}
//3.文件上传
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
//存文件至FTP服务器
//参数1:FTP文件的保存名称
//参数2:本地文件输入流
boolean isStore=ftpClient.storeFile(System.currentTimeMillis()+".jpg", in);
System.out.println("上传成功?"+isStore);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
ftpClient.disconnect();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
有文件上传,当然也可以从FTP服务器中下载文件(代码如下:)文章来源:https://uudwc.com/A/4E0vY
//基于FTP协议的文件下载
//创建基于FTP协议访问文件服务器的客户端对象
FTPClient ftpClient=new FTPClient();
try (OutputStream out=new FileOutputStream("C:\\text\\gx\\"+System.currentTimeMillis()+".jpg")){
//1.连接FTP服务器并验证用户名和密码
ftpClient.connect("192.168.254.155",21);
ftpClient.login("gx", "0000");
//2.切换至指定目录
ftpClient.changeWorkingDirectory("spp");
//3.下载指定文件
//从FTP服务器下载指定文件至本地
//参数1:FTP文件的保存名称
//参数2:本地文件输出流
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//文件类型
boolean isRetrieve=ftpClient.retrieveFile("1688797624841.jpg", out);
System.out.println("下载成功?"+isRetrieve);
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
//断开连接
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
文章来源地址https://uudwc.com/A/4E0vY