java上传文件到ftp服务器_java 上传文件到FTP服务器

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

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

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

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

public class FTPTool {

public static void main(String[] args) {

if(upLoadFromProduction("192.168.1.190",21,"zhangbo","enss5129.","admin/中文测试/ASD","测试.txt","D:/上传文件新建数据库.txt")){

System.out.println("success");

}else{

System.out.println("error");

}

}

static FTPClient ftp = new FTPClient();

/*** 将本地文件上传到FTP服务器上 **/

public static boolean upLoadFromProduction(String url,// FTP服务器hostname int port,// FTP服务器端口 String username, // FTP登录账号 String password, // FTP登录密码 String path, // FTP服务器保存目录 String filename, // 上传到FTP服务器上的文件名 String orginfilename // 输入流文件名 ){

FileInputStream in;

try {

in = new FileInputStream(new File(orginfilename));

if(uploadFile(url,port,username,password,path,filename,in)){

return true;

}

} catch (FileNotFoundException e) {

e.printStackTrace();

return false;

}

return false;

}

/*** Description: 向FTP服务器上传文件* @Version 1.0* @param url FTP服务器hostname* @param port FTP服务器端口* @param username FTP登录账号* @param password FTP登录密码* @param path FTP服务器保存目录* @param filename 上传到FTP服务器上的文件名* @param input 输入流* @return 成功返回true,否则返回false **/

public static boolean uploadFile(String url,// FTP服务器hostname int port,// FTP服务器端口 String username, // FTP登录账号 String password, // FTP登录密码 String path, // FTP服务器保存目录 String filename, // 上传到FTP服务器上的文件名 InputStream input // 输入流

){

ftp.setControlEncoding("GBK");

try {

int reply;

ftp.connect(url);// 连接FTP服务器 // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);// 登录 reply = ftp.getReplyCode();

if (!FTPReply.isPositiveCompletion(reply)) {

ftp.disconnect();

return false;

}

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

//判断ftp服务器目录是否存在 System.out.println(path);

if(!existFile(path)){

System.out.println("目录不存在");

CreateDirecroty(path);

}

ftp.changeWorkingDirectory(path);

ftp.storeFile(filename, input);

input.close();

ftp.logout();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (ftp.isConnected()) {

try {

ftp.disconnect();

} catch (IOException ioe) {

}

}

}

return true;

}

//创建目录 public static boolean makeDirectory(String dir) {

boolean flag = true;

try {

flag = ftp.makeDirectory(dir);

if (flag) {

System.out.println("创建文件夹" + dir + " 成功!");

} else {

System.out.println("创建文件夹" + dir + " 失败!");

}

} catch (Exception e) {

e.printStackTrace();

}

return flag;

}

//改变目录路径 public static boolean changeWorkingDirectory(String directory) {

boolean flag = true;

try {

flag = ftp.changeWorkingDirectory(directory);

if (flag) {

System.out.println("进入文件夹" + directory + " 成功!");

} else {

System.out.println("进入文件夹" + directory + " 失败!");

}

} catch (IOException ioe) {

ioe.printStackTrace();

}

return flag;

}

//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建 public static boolean CreateDirecroty(String remote) throws IOException {

boolean success = true;

String directory = remote + "/";

// String directory = remote.substring(0, remote.lastIndexOf("/") + 1); // 如果远程目录不存在,则递归创建远程服务器目录 if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) {

int start = 0;

int end = 0;

if (directory.startsWith("/")) {

start = 1;

} else {

start = 0;

}

end = directory.indexOf("/", start);

String path = "";

String paths = "";

while (true) {

String subDirectory = remote.substring(start, end);

path = path + "/" + subDirectory;

if (!existFile(path)) {

if (makeDirectory(subDirectory)) {

changeWorkingDirectory(subDirectory);

} else {

System.out.println("创建目录[" + subDirectory + "]失败");

changeWorkingDirectory(subDirectory);

}

} else {

changeWorkingDirectory(subDirectory);

}

paths = paths + "/" + subDirectory;

start = end + 1;

end = directory.indexOf("/", start);

// 检查所有目录是否创建完毕 if (end <= start) {

break;

}

}

}

return success;

}

//判断ftp服务器文件是否存在 public static boolean existFile(String path) throws IOException {

boolean flag = false;

FTPFile[] ftpFileArr = ftp.listFiles(path);

if (ftpFileArr.length > 0) {

flag = true;

}

return flag;

}

}

  • 0
    点赞
  • 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、付费专栏及课程。

余额充值