jdk1.7 FtpClient应用

更新时间:2023-11-12 18:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

sun.net.ftp.FtpClient 这个类在jdk的帮助文档中没有具体的说明,也就是并没有对外公开。并且这个类是在jdk的 rt.jar中实现的。

jdk1.7中其构造函数FtpClient()被定义为private类型,所以无法new了。 所以在jdk1.7中new FtpClient()就会 报错 cannot instantiate the type FtpClient

在jdk1.7,已经换成了 FtpClient.create(ip)方法 同时,其他的一些方法也基本都改掉了, 如 ftpClient.openServer(server); ftpClient.login(user, password);

就可以换成:ftpClient.login(user, null, password); ftpClient.binary(); ---> ftpClient.setBinaryType();

ftpClient.put(remotefilename);--->ftpClient.putFileStream(remotefilename, true); 等。

FTPUtil.Java

package com.ftp;

import java.io.File;

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;

import java.io.OutputStream;

import java.net.InetSocketAddress; import java.net.SocketAddress; import sun.net.ftp.FtpClient;

import sun.net.ftp.FtpProtocolException;

public class FTPUtil { /**

* 连接ftp服务器 JDK 1.7 *

* @param url * @param port

* @param username * @param password * @return FtpClient

* @throws FtpProtocolException * @throws IOException */

public static FtpClient connectFTP(String url, int port, String username, String password) { // 创建ftp FtpClient ftp = null; try {

// 创建地址

SocketAddress addr = new InetSocketAddress(url, port); // 连接

ftp = FtpClient.create(); ftp.connect(addr);

// 登陆

ftp.login(username, password.toCharArray()); ftp.setBinaryType();

System.out.println(ftp.getWelcomeMsg()); } catch (FtpProtocolException e) {

// TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); }

return ftp; }

/**

* 切换目录 *

* @param ftp * @param path */

public static void changeDirectory(FtpClient ftp, String path) { try {

ftp.changeDirectory(path);

System.out.println(ftp.getWorkingDirectory()); } catch (FtpProtocolException e) {

// TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } }

/**

* 关闭ftp *

* @param ftp */

public static void disconnectFTP(FtpClient ftp) { try {

ftp.close();

System.out.println(\ } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } }

/**

* 上传文件 *

* @param localFile * @param ftpFile * @param ftp */

public static void upload(String localFile, String ftpFile, FtpClient ftp) { OutputStream os = null; FileInputStream fis = null; try {

// 将ftp文件加入输出流中。输出到ftp上 os = ftp.putFileStream(ftpFile);

File file = new File(localFile);

// 创建一个缓冲区

fis = new FileInputStream(file); byte[] bytes = new byte[1024]; int c;

while ((c = fis.read(bytes)) != -1) { os.write(bytes, 0, c); }

System.out.println(\ } catch (FtpProtocolException e) {

// TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } finally { try {

if (os != null) os.close(); if (fis != null) fis.close(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } } }

/**

* 文件下载 *

* @param localFile * @param ftpFile * @param ftp */

public static void download(String localFile, String ftpFile, FtpClient ftp) { InputStream is = null;

FileOutputStream fos = null; try {

// 获取ftp上的文件

is = ftp.getFileStream(ftpFile); File file = new File(localFile); byte[] bytes = new byte[1024]; int i;

fos = new FileOutputStream(file); while ((i = is.read(bytes)) != -1) { fos.write(bytes, 0, i); }

System.out.println(\ } catch (FtpProtocolException e) {

// TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } finally { try {

if (fos != null) fos.close(); if (is != null) { is.close(); }

} catch (IOException e) {

// TODO Auto-generated catch block e.printStackTrace(); } } } }

Test.java

package test;

import java.net.InetAddress;

import java.net.UnknownHostException; import sun.net.ftp.FtpClient; import com.ftp.FTPUtil;

public class Test {

public static void main(String[] args) { try {

InetAddress addr = InetAddress.getLocalHost(); System.out.println(addr.getHostAddress()); } catch (UnknownHostException e) {

// TODO Auto-generated catch block e.printStackTrace(); }

String ip = \ int port = 21;

String username = \ String password = \ String path = \

// 连接ftp

FtpClient ftp = FTPUtil.connectFTP(ip, port, username, password); System.out.println(ftp.getWelcomeMsg()); // 切换目录

FTPUtil.changeDirectory(ftp, path);

System.out.println(\上传----\

FTPUtil.upload(\ System.out.println(\下载----\

FTPUtil.download(\ } }

本文来源:https://www.bwwdw.com/article/2blv.html

Top