JAVA FTP 读写文件

本文提供了一个使用Java实现FTP文件上传和下载的示例代码,包括连接FTP服务器、上传文件、下载文件到本地等操作,并解决了中文文件名乱码的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class FtpTest {  
    /** 
     * 向ftp写文件(数据) 
     */  
    @Test  
    public void uploadFile() {  
   
        // 要写入的文件内容  
        String fileContent = "hello world,你好世界";  
        // ftp登录用户名  
        String userName = "admin";  
        // ftp登录密码  
        String userPassword = "xxxx";  
        // ftp地址  
        String server = "127.0.0.1";//直接ip地址  
        // 创建的文件  
        String fileName = "ftp.txt";  
        // 指定写入的目录  
        String path = "wd";  
   
        FTPClient ftpClient = new FTPClient();  
        try {  
            InputStream is = null;  
            // 1.输入流  
            is = new ByteArrayInputStream(fileContent.getBytes());  
            // 2.连接服务器  
            ftpClient.connect(server);  
            // 3.登录ftp  
            ftpClient.login(userName, userPassword);  
            // 4.指定写入的目录  
            ftpClient.changeWorkingDirectory(path);  
            // 5.写操作  
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  
            ftpClient.storeFile(new String(fileName.getBytes("utf-8"),  
                    "iso-8859-1"), is);  
            is.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (ftpClient.isConnected()) {  
                try {  
                    ftpClient.disconnect();  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
      
    /** 
     * ftp下载数据 
     */  
    @Test  
    public void downFile() {  
        // ftp登录用户名  
        String userName = "admin";  
        // ftp登录密码  
        String userPassword = "xxxx";  
        // ftp地址:直接IP地址  
        String server = "xxxx";  
        // 创建的文件  
        String fileName = "ftp.txt";  
        // 指定写入的目录  
        String path = "wd";  
        // 指定本地写入文件  
        String localPath="D:\\";  
          
        FTPClient ftp = new FTPClient();  
        try {  
            int reply;  
            //1.连接服务器  
            ftp.connect(server);  
            //2.登录服务器 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器  
            ftp.login(userName, userPassword);  
            //3.判断登陆是否成功  
            reply = ftp.getReplyCode();  
            if (!FTPReply.isPositiveCompletion(reply)) {  
                ftp.disconnect();  
            }  
            //4.指定要下载的目录  
            ftp.changeWorkingDirectory(path);// 转移到FTP服务器目录  
            //5.遍历下载的目录  
            FTPFile[] fs = ftp.listFiles();  
            for (FTPFile ff : fs) {  
                //解决中文乱码问题,两次解码  
                byte[] bytes=ff.getName().getBytes("iso-8859-1");  
                String fn=new String(bytes,"utf8");  
                if (fn.equals(fileName)) {  
                    //6.写操作,将其写入到本地文件中  
                    File localFile = new File(localPath + ff.getName());  
                    OutputStream is = new FileOutputStream(localFile);  
                    ftp.retrieveFile(ff.getName(), is);  
                    is.close();  
                }  
            }  
            ftp.logout();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            if (ftp.isConnected()) {  
                try {  
                    ftp.disconnect();  
                } catch (IOException ioe) {  
                }  
            }  
        }  
    }  
 }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值