java实现ftp上传下载(jdk1.7以下)

java实现ftp上传下载(jdk1.7以下)

完整代码,复制可用

FTP实现代码:

package com.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import sun.net.TelnetInputStream;

import sun.net.TelnetOutputStream;

import sun.net.ftp.FtpClient;

/**

 * Java自带的API对FTP的操作

 * 

 * @Title:Ftp.java

 * @author 杨戈

 * @date 2015-3-17

 */

public class FtpUtil {

/**

 * 本地文件名

 */

private String localfilename;

/**

 * 远程文件名

 */

private String remotefilename;

/**

 * FTP客户端

 */

private FtpClient ftpClient;

 

/**

 * 服务器连接

 * 

 * @param ip 服务器IP

 * @param port 服务器端口

 * @param user 用户名

 * @param password  密码

 * @param path 服务器路径

 * @author 杨戈

 * @date 2015-3-17

 */

public void connectServer(String ip, int port, String user,String password, String path) {

try {

/*  ******连接服务器的两种方法****** */

// 第一种方法

// ftpClient = new FtpClient();

// ftpClient.openServer(ip, port);

// 第二种方法

ftpClient = new FtpClient(ip);

 

ftpClient.login(user, password);

// 设置成2进制传输

ftpClient.binary();

System.out.println("login success!");

if (path.length() != 0) {

// 把远程系统上的目录切换到参数path所指定的目录

ftpClient.cd(path);

}

ftpClient.binary();

catch (IOException ex) {

ex.printStackTrace();

throw new RuntimeException(ex);

}

}

 

/**

 * 关闭连接

 * @author 杨戈

 * @date 2015-3-17

 */

public void closeConnect() {

try {

ftpClient.closeServer();

System.out.println("disconnect success");

catch (IOException ex) {

System.out.println("not disconnect");

ex.printStackTrace();

throw new RuntimeException(ex);

}

}

 

/**

 * 上传文件

 * @param localFile  本地文件

 * @param remoteFile远程文件

 * @author 杨戈

 * @date 2015-3-17

 */

public void upload(String localFile, String remoteFile) {

this.localfilename = localFile;

this.remotefilename = remoteFile;

TelnetOutputStream os = null;

FileInputStream is = null;

try {

// 将远程文件加入输出流中

os = ftpClient.put(this.remotefilename);

// 获取本地文件的输入流

File file_in = new File(this.localfilename);

is = new FileInputStream(file_in);

// 创建一个缓冲区

byte[] bytes = new byte[1024];

int c;

while ((c = is.read(bytes)) != -1) {

os.write(bytes, 0, c);

}

System.out.println("upload success");

catch (IOException ex) {

System.out.println("not upload");

ex.printStackTrace();

throw new RuntimeException(ex);

finally {

try {

if (is != null) {

is.close();

}

catch (IOException e) {

e.printStackTrace();

finally {

try {

if (os != null) {

os.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

 

/**

 * 下载文件

 * @param remoteFile  远程文件路径(服务器端)

 * @param localFile  本地文件路径(客户端)

 * @author 杨戈

 * @date 2015-3-17

 */

public void download(String remoteFile, String localFile) {

TelnetInputStream is = null;

FileOutputStream os = null;

try {

// 获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。

is = ftpClient.get(remoteFile);

File file_in = new File(localFile);

File parent = file_in.getParentFile(); // 子路径对象

if (parent != null && !parent.exists()) { // 如果子路径不存在

parent.mkdirs(); // 创建子路径

}

os = new FileOutputStream(file_in);

byte[] bytes = new byte[1024];

int c;

while ((c = is.read(bytes)) != -1) {

os.write(bytes, 0, c);

}

System.out.println("download success");

catch (IOException ex) {

System.out.println("not download");

ex.printStackTrace();

throw new RuntimeException(ex);

finally {

try {

if (is != null) {

is.close();

}

catch (IOException e) {

e.printStackTrace();

finally {

try {

if (os != null) {

os.close();

}

catch (IOException e) {

e.printStackTrace();

}

}

}

}

 

public static void main(String agrs[]) {

String filepath = "AWC1002974G020-1.cgm";

String localfilepath = "C:\\ftp下载\\AWC1002974G020-1.cgm";

FtpUtil fu = new FtpUtil();

/*

 * 使用默认的端口号、用户名、密码以及根目录连接FTP服务器

 */

fu.connectServer("127.0.0.1", 21, "pifeng""19920720""");

fu.download(filepath, localfilepath);

fu.upload(localfilepath, filepath);

fu.closeConnect();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

E%3Dmc%B2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值