首页 > 系统相关 >java使用ftp连接linux处理文件

java使用ftp连接linux处理文件

时间:2023-12-07 16:56:50浏览次数:41  
标签:ftp java String 登录 try linux new your ftpClient

1、Maven依赖

     <!-- FTP使用包 -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>

2、使用方式

package com.task;

import org.apache.commons.net.ftp.*;

import java.io.*;
import java.nio.charset.StandardCharsets;

public class RecordTask {
    public static void main(String[] args) throws Exception {
        // Linux服务器IP或主机名
        String server = "your_server";
        // FTP端口号(默认为21)
        int port = Integer.valueOf("your_port");
        // FTP登录用户名
        String userName = "your_username";
        // FTP登录密码
        String password = "your_password";

        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect(server, port);
            ftpClient.login(userName, password);
            // 设置被动模式传输数据
            ftpClient.enterLocalPassiveMode();
            // 切换到指定目录
            ftpClient.changeWorkingDirectory("/opt/test");
            // 列出当前目录下的所有文件
            FTPFile[] files = ftpClient.listFiles();
            for (FTPFile file : files) {
                if (!file.isDirectory()) {
                    // 将文件从Linux服务器下载到本地
                    File localFile = new File("local_directory/" + file.getName());
                    OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(localFile));
                    InputStream inputStream = ftpClient.retrieveFileStream(file.getName());
                    byte[] buffer = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = inputStream.read(buffer)) != -1) {
                        outputStream.write(buffer, 0, bytesRead);
                    }
                    outputStream.close();
                    inputStream.close();
                }
            }
            System.out.println("文件下载完成!");
        } finally {
            if(ftpClient!=null && ftpClient.isConnected()){
                try {
                    //退出登录
                    ftpClient.logout();
                    //断开连接
                    ftpClient.disconnect();
                    System.out.println("退出登录,断开连接");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 删除文件
     */
    public void deleteFile(FTPClient ftpClient,String fileName){
        if(ftpClient == null){
            return;
        }
        //String fileName = "/opt/test/测试.txt";
        String validFileName = new String(fileName.getBytes(), StandardCharsets.ISO_8859_1);
        boolean flag ;
        try {
            flag = ftpClient.deleteFile(validFileName);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(ftpClient!=null && ftpClient.isConnected()){
                try {
                    //退出登录
                    ftpClient.logout();
                    //断开连接
                    ftpClient.disconnect();
                    System.out.println("退出登录,断开连接");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


标签:ftp,java,String,登录,try,linux,new,your,ftpClient
From: https://www.cnblogs.com/eternality/p/17883381.html

相关文章

  • 《Java编程思想第四版》学习笔记45--关于图标
    //:Faces.java//IconbehaviorinJButtonspackagec13.swing;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassFacesextendsJPanel{staticIcon[]faces={newImageIcon("face0.gif"),......
  • Java 标准库实现常见加密解密
    一时兴起,好奇Java中常用的加解密是如何实现的,今天就常见的bas64编码解码、MD5、SHA256、HmacSHA256做个简单小结,希望对各位有用。环境:JDK:17以下内容基于JDK17的自带工具库实现,示例如下:packagecom.example.util;importjavax.crypto.Mac;importjavax.crypto.......
  • [JVM] Java Heap Dump 分析 [转载]
    0序缘起近期项目上我负责的微服务出现了难以排查的问题,目前怀疑是JVM线程方面的情况,但也需从heapdump方面进一步印证,故需深入了解heapdump文件内容的各项含义。本文主要转载了网友的观点,详见:参考文献1HeapDump分析1.1heapdump简介heapdump文件是一个二进制......
  • linux-ELK安装配置
    前言:  ELK是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash和Kibana。   •Elasticsearch是一个搜索和分析引擎。   •Logstash是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如Elasticsearch等存储库中。......
  • Java扩展赋值运算符,字符串连接符
    1.扩展赋值运算符  2.字符串连接符   ......
  • JavaSe(11) - 常用API(上)
    JavaSe(11)-常用API(上)P155Math基本数学计算的工具类,包含执行基本数学运算的方法,例如指数,对数,平方根,三角函数...方法名说明publicstaticintabs(inta)获取绝对值ceil(doublea)向上取整floor(doublea)向下取整round(floata)四舍五入......
  • Java 通过反射获取注解属性信息以及状态中字典
    一、创建存储对象importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/***属性对象存储类*/publicclassMetadataField{/***key对应对象中间的属性*/privateStringkey;/***字......
  • Java逻辑运算符,短路运算
     短路运算 因为c=5,所以c<4为false,又因为逻辑与运算,只要出现一个false就会输出所以booleand=(c<4)&&(c++<4);这行代码直接会输出false,(c++<4)也不会被执行所以输出的结果为false,c=5,而不是c=6.-----------------------------------------------------------------------......
  • java 自定义查询StringBuffer Sql
    一、背景二、实现@AutowiredprivateEntityManagerentityManager;Queryquery=entityManager.createNativeQuery(sql);query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);List<Map<String,Object>>reportWaterTota=qu......
  • 【Java语言】区域医院信息系统云HIS源码
    一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好地服务。新理念新技术的趋势云计算技术:云计算是一种通过网络将高弹性的共享的物理和虚拟资源,按需进行服务和管理的方式。它具有以下特点:虚拟......