上传文件至FTP部分代码

Java判断本地文件夹是否存在

	File localFile = new File(*文件路径*);
    if (!localFile.exists() && !localFile.isDirectory()){
        //执行操作
    }

Java判断FTP是否连接成功

public void connectFTP(String hostname, int port, String username, String password) {
        FTPClient ftpClient = new FTPClient();
        ftpClient.setControlEncoding("utf-8");
        try {
            ftpClient.connect(hostname, port); //连接到FTP服务器,若报错则直接catch IOException
            ftpClient.login(username, password); //登录到FTP服务器
            //int replyCode = ftpClient.getReplyCode(); //根据replyCode可以判断登录是否成功
        }catch (IOException e){
            //JOptionPane.showMessageDialog(null, "FTP连接失败!", "错误提示", JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }

上传文件到FTP

/**
     *
     * @param ftpPath FTP地址
     * @param filePath 本地文件地址
     * @param intervalPerFile 上传间隔时间
     * @param hostname 主机名
     * @param port 端口号
     * @param username 用户名
     * @param password 密码
     */
    public void uploadFile(String ftpPath, String filePath, String intervalPerFile,
                               String hostname, int port, String username, String password){
        File localFile = new File(filePath);
        File[] files = localFile.listFiles();
        InputStream inputStream = null;
        String fileName = "";
        try{
            connectFTP(hostname, port, username, password); //连接FTP服务器
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setControlEncoding("GBK");
            
			//---------------判断获取传入的FTP文件目录是否存在--------------------
            String dir = ftpPath.substring(0, ftpPath.lastIndexOf("/")); 
            String file = ftpPath.substring(ftpPath.lastIndexOf("/")+1);
          	if (!FTPExistFile(dir, file)){
               int res = JOptionPane.showConfirmDialog(null, "FTP目录不存在,是否继续操作", "是否继续", JOptionPane.YES_NO_OPTION);
               if (res == JOptionPane.YES_OPTION) {
                   CreateDirecroty(ftpPath); //在FTP创建该文件目录
               } else {
                   return;
               }
            }
            //-------------------------------END---------------------------------
            ftpClient.changeWorkingDirectory(ftpPath);//更改FTP当前文件目录地址

           if (files != null && files.length != 0) {
               for (File file1 : files) {
                   try {
                       String currentFilePath = file1.getAbsolutePath();
                       fileName = currentFilePath.substring(currentFilePath.lastIndexOf("\\") + 1);
                       inputStream = new FileInputStream(currentFilePath);
                       ftpClient.storeFile(fileName, inputStream);
                       //---------------------设置时间间隔上传------------------------------
                       //try {
                       //  Thread.sleep(Integer.parseInt(intervalPerFile) * 1000);
                       //} catch (InterruptedException e) {
                       //   e.printStackTrace();
                       //}
                       //-------------------------------END---------------------------------
                   } catch (Exception e) {
                       System.out.println(fileName + "上传失败");
                       e.printStackTrace();
                   }
               }
           }
           ftpClient.logout();
        }catch (Exception e){
            e.printStackTrace();
        }finally{
            if(ftpClient.isConnected()){
                try{
                    ftpClient.disconnect();
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
            if(null != inputStream ){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

判断FTP是否存在文件目录

public boolean FTPExistFile(String dir, String file) throws IOException {
        boolean flag = false;
        FTPFile[] ftpFileArr = ftpClient.listFiles(dir);
        if (ftpFileArr.length > 0) {
            for (FTPFile ftpFile: ftpFileArr) {
                if (ftpFile.getName().equals(file)){
                    flag = true;
                }
            }
        }
        return flag;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java上传文件FTP服务器的示例代码: ```java import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class FTPUploader { public static void main(String[] args) { String server = "ftp.example.com"; int port = 21; String username = "your-username"; String password = "your-password"; File fileToUpload = new File("path/to/file.txt"); // 要上传的文件路径 FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(server, port); ftpClient.login(username, password); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); FileInputStream fileInputStream = new FileInputStream(fileToUpload); String remoteFile = "uploaded-file.txt"; // 远程服务器上保存的文件名 boolean uploaded = ftpClient.storeFile(remoteFile, fileInputStream); fileInputStream.close(); if (uploaded) { System.out.println("文件上传成功!"); } else { System.out.println("文件上传失败!"); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` 以上代码使用了Apache Commons Net库来处理FTP相关操作。你需要将`server`、`port`、`username`和`password`替换为你的FTP服务器的相关信息,将`fileToUpload`替换为你要上传的文件路径,`remoteFile`替换为在服务器上保存的文件名。 请确保你的项目中包含了Apache Commons Net库的依赖。你可以在Maven项目中添加以下依赖: ```xml <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.8.0</version> </dependency> ``` 希望对你有所帮助!如果有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值