Ftp相关的类库很多,这里以JDK自带的FTP上传下载功能为例。
package com.boonya.upload.util.simple;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.InetSocketAddress;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
import sun.net.ftp.FtpProtocolException;
/**
* Java自带的API对FTP的操作
* @Jdk:version 1.7
* @Title:Ftp.java
* @author: boonya
* @notice: 貌似此方法有个缺陷,不能操作大文件
*/
public class FtpJdk
{
/**
*
* 本地文件名
*/
private String localfilename;
/**
*
* 远程文件名
*/
private String remotefilename;
/**
*
* FTP客户端
*/
private FtpClient ftpClient;
/**
* 服务器连接
*
* @param ip
* 服务器IP
* @param port
* 服务器端口
* @param user
* 用户名
* @param password
* 密码
* @param path
* 服务器路径
* @throws FtpProtocolException
*
*/
public void connectServer(String ip, int port, String user, String password, String path) throws FtpProtocolException
{
try
{
/* ******连接服务器的两种方法****** */
// 第一种方法
/*
* ftpClient =FtpClient.create();
* ftpClient.connect(new InetSocketAddress(ip, port));
*/
// 第二种方法
ftpClient = FtpClient.create(ip);
ftpClient.login(user, null, password);
// 设置成2进制传输
ftpClient.setBinaryType();
System.out.println("login success!");
if (path.length() != 0)
{
// 把远程系统上的目录切换到参数path所指定的目录
ftpClient.changeDirectory(path);
}
ftpClient.setBinaryType();
} catch (IOException ex)
{
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
/**
* 关闭连接
*
*/
public void closeConnect()
{
try
{
ftpClient.close();
System.out.println("disconnect success");
} catch (IOException ex)
{
System.out.println("not disconnect");
ex.printStackTrace();
throw new RuntimeException(ex);
}
}
/**
*
* 上传文件
*
* @param localFile
* 本地文件
* @param remoteFile
* 远程文件
* @throws FtpProtocolException
*/
public void upload(String localFile, String remoteFile) throws FtpProtocolException
{
this.localfilename = localFile;
this.remotefilename = remoteFile;
TelnetOutputStream os = null;
FileInputStream is = null;
try
{
// 将远程文件加入输出流中
os = (TelnetOutputStream) ftpClient.putFileStream(this.remotefilename, true);
// 获取本地文件的输入流
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
* 本地文件路径(客户端)
* @throws FtpProtocolException
*
*/
public void download(String remoteFile, String localFile) throws FtpProtocolException
{
TelnetInputStream is = null;
FileOutputStream os = null;
try
{
// 获取远程机器上的文件filename,借助TelnetInputStream把该文件传送到本地。
is = (TelnetInputStream) ftpClient.getFileStream(remoteFile);
File file_in = new File(localFile);
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();
}
}
}
}
/**
* 函数入口
*
* @param agrs
*/
public static void main(String agrs[])
{
String filepath[] =
{ "/temp/aa.txt", "/temp/regist.log" };
String localfilepath[] =
{ "C:\\tmp\\1.txt", "C:\\tmp\\2.log" };
FtpJdk ftp = new FtpJdk();
/*
* 使用默认的端口号、用户名、密码以及根目录连接FTP服务器
*/
try
{
ftp.connectServer("127.0.0.1", 22, "boonya", "user@", "/temp");
} catch (FtpProtocolException e)
{
e.printStackTrace();
}
// 下载
for (int i = 0; i < filepath.length; i++)
{
try
{
ftp.download(filepath[i], localfilepath[i]);
} catch (FtpProtocolException e)
{
e.printStackTrace();
}
}
String localfile = "E:\\contact.txt";
String remotefile = "/temp/records.txt";
// 上传
try
{
ftp.upload(localfile, remotefile);
} catch (FtpProtocolException e)
{
e.printStackTrace();
}
ftp.closeConnect();
}
}
参考自:http://www.open-open.com/lib/view/open1342167969281.html
分享到:
相关推荐
jdk1.7_linux Linux版零积分jdk1.7_linux Linux版零积分免费下载jdk1.7_linux Linux版零积分免费下载jdk1.7_linux Linux版零积分免费下载jdk1.7_linux Linux版零积分免费下载jdk1.7_linux Linux版零积分免费下载jdk...
标题"jdk1.7正式版64位下载"指的是这个资源是针对64位操作系统的JDK 1.7的官方稳定版本。64位操作系统能够处理更大的内存地址空间,因此对于需要处理大量数据或者运行大型应用的开发者来说,64位JDK是一个必要的选择...
7. **文件系统API增强**:` java.nio.file `包在JDK1.7中得到了加强,引入了` Files `类和` Path `接口,提供了更强大的文件操作功能,如更灵活的路径操作和权限管理。 8. **并发改进**:` java.util.concurrent `...
标题"jdk1.7 linux64位下载"明确指出我们要讨论的是JDK 1.7在64位Linux环境下的安装和使用。 JDK 1.7,也被称为Java 7,是Oracle公司发布的一个重要版本,于2011年发布,包含了多项重要的新特性与改进。其中一些...
6. **下载与更新**:虽然Java JDK 1.7是旧版本,但有时出于兼容性考虑仍需使用。通常,可以从Oracle官网获取,但由于描述中提到,也可以在CSDN等平台找到免安装版本,方便快速下载。 总之,Java JDK 1.7是一个重要...
JDK自带的`javac`编译器将源代码编译成字节码,`jar`工具用于打包类文件,`javadoc`生成API文档,`jdb`是Java的调试工具,`jconsole`提供JVM监控等。 总的来说,JDK 1.7在Java发展历程中扮演着关键角色,它的许多新...
1. 下载并解压缩文件到你希望的位置,例如`C:\Program Files\Java\jdk1.7.0_07`。 2. 设置环境变量: - `JAVA_HOME`:指向JDK的安装目录,如`C:\Program Files\Java\jdk1.7.0_07`。 - `PATH`:在原有基础上追加 `%...
**Java Development Kit (JDK) 1.7 版本详解** Java Development Kit,简称JDK,是Oracle公司提供的用于开发和运行Java应用程序的核心工具集。JDK 1.7,也被称为Java 7,是Java平台的一个重要版本,包含了Java...
### jdk1.7_64免安装版本百度云下载 #### JDK 1.7 (Java Development Kit) 概述 JDK(Java Development Kit),即Java开发工具包,是Sun Microsystems(已被Oracle公司收购)针对Java语言开发的一款功能强大的软件...
1. 下载并运行`jdk1.7.exe`。 2. 遵循安装向导的提示,选择安装目录。 3. 在环境变量中配置`JAVA_HOME`指向JDK的安装路径。 4. 添加`%JAVA_HOME%\bin`到系统的PATH环境变量,确保命令行可以识别`javac`、`java`等...
在Windows 64位系统上安装JDK 1.7,需要下载对应的安装包,如压缩包文件中的`jdk1.7.0_79`。完成安装后,还需要进行环境变量配置,包括设置`JAVA_HOME`指向JDK的安装目录,将`%JAVA_HOME%\bin`添加到系统`PATH`变量...
提供的文件“jdk-7u80-windows-x64.exe”是Windows 64位系统的JDK 1.7更新80版本的安装程序。安装步骤通常包括: 1. 下载并运行安装程序。 2. 遵循安装向导的提示,选择安装路径。 3. 设置环境变量,包括`JAVA_HOME`...
- 使用JDK自带的编译器`javac`编译源代码,生成字节码文件。 - 运行Java程序,使用`java`命令。 - 调试代码,可以使用`jdb`或IDE内置的调试工具。 - 打包应用,JDK提供`jar`命令创建jar文件,方便部署和分发。 **4....
jdk 1.7 64位jdk 1.7 64位jdk 1.7 64位jdk 1.7 64位jdk 1.7 64位jdk 1.7 6
- 下载压缩包文件`jdk1.7.0_21`。 - 解压缩到你希望放置JDK的目录,例如`C:\Program Files\Java`。 - 设置环境变量: - `JAVA_HOME`:指向JDK的根目录,例如`C:\Program Files\Java\jdk1.7.0_21`。 - `PATH`:...
1. **下载**:根据操作系统(64位或32位)选择对应的JDK 1.7安装包,例如文件名“jdk7 64位安装包.exe”适用于64位系统。 2. **运行安装程序**:双击下载的.exe文件,启动安装向导。 3. **接受许可协议**:阅读并...
标题 "springboot+mybatis+jdk1.7" 指的是一个基于Spring Boot、MyBatis框架,并使用Java Development Kit 1.7版本构建的Web应用项目。这个项目已经搭建完成,具备基本的结构,方便开发者快速启动一个新的Java Web...
jdk1.7 windows 32: Windows 32位下的JDK1.7 请注意不要下错了 无需安装,解压即可 注意设置环境变量 本资源分为两部分,都在我空间里(csdn不允许文件超过60M)
安装文件“jdk-7u60-windows-x64.exe”是针对Windows操作系统的64位版本的JDK1.7更新60。安装过程中,用户需要接受许可协议,并选择安装路径。安装完成后,系统环境变量如`JAVA_HOME`和`PATH`需要正确配置,以便在...