FTP协议

        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服务器中下载文件(代码如下:)

//基于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();
			}
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值