- 浏览: 438255 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- spring (4)
- jFreeChart (1)
- oracle (3)
- tomcat (1)
- mysql (2)
- jbpm (2)
- jQuery (4)
- 财经 (3)
- php (1)
- linux (1)
- ExtJs (2)
- android (92)
- 生活 (5)
- Json (2)
- html (4)
- java (24)
- other (16)
- struts 2 (3)
- hibernate (3)
- Lucene (2)
- Thread (1)
- javaScript (2)
- weblogic (1)
- T-SQL (3)
- Ant (1)
- memcached (6)
- apache (1)
- android 事件处理 (0)
- git (1)
- 设计模式 (1)
最新评论
-
feng_tai_jun:
...
weblogic.xml 部署描述符元素 -
hnraysir:
赞,必须要顶顶顶!
Android中的Surface和SurfaceView -
hety163:
如果你设置的是一个viewgroup的ontouch,想判断不 ...
一个view如何同时响应onTouch和onClick事件 -
yue_670176656:
[flash=200,200][/flash][img][ur ...
九宫格手势密码案例 -
asdf_2012:
必须顶,好文章。简洁
Android中的Surface和SurfaceView
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.io.PrintWriter;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class ContinueFTP {
private FTPClient ftpClient = new FTPClient();
public ContinueFTP(){
//设置将过程中使用到的命令输出到控制台
this.ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
}
/**
* java编程中用于连接到FTP服务器
* @param hostname 主机名
* @param port 端口
* @param username 用户名
* @param password 密码
* @return 是否连接成功
* @throws IOException
*/
public boolean connect(String hostname,int port,String username,String password) throws IOException{
ftpClient.connect(hostname, port);
if(FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){
if(ftpClient.login(username, password)){
return true;
}
}
disconnect();
return false;
}
/**
* 从FTP服务器上下载文件
* @param remote 远程文件路径
* @param local 本地文件路径
* @return 是否成功
* @throws IOException
*/
public boolean download(String remote,String local) throws IOException{
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
boolean result;
File f = new File(local);
FTPFile[] files = ftpClient.listFiles(remote);
if(files.length != 1){
System.out.println("远程文件不唯一");
return false;
}
long lRemoteSize = files[0].getSize();
if(f.exists()){
OutputStream out = new FileOutputStream(f,true);
System.out.println("本地文件大小为:"+f.length());
if(f.length() >= lRemoteSize){
System.out.println("本地文件大小大于远程文件大小,下载中止");
return false;
}
ftpClient.setRestartOffset(f.length());
result = ftpClient.retrieveFile(remote, out);
out.close();
}else {
OutputStream out = new FileOutputStream(f);
result = ftpClient.retrieveFile(remote, out);
out.close();
}
return result;
}
/**
* 上传文件到FTP服务器,支持断点续传
* @param local 本地文件名称,绝对路径
* @param remote 远程文件路径,使用/home/directory1/subdirectory/file.ext 按照Linux上的路径指定方式,支持多级目录嵌套,支持递归创建不存在的目录结构
* @return 上传结果
* @throws IOException
*/
public UploadStatus upload(String local,String remote) throws IOException{
//设置PassiveMode传输
ftpClient.enterLocalPassiveMode();
//设置以二进制流的方式传输
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
UploadStatus result;
//对远程目录的处理
String remoteFileName = remote;
if(remote.contains("/")){
remoteFileName = remote.substring(remote.lastIndexOf("/")+1);
String directory = remote.substring(0,remote.lastIndexOf("/")+1);
if(!directory.equalsIgnoreCase("/")&&!ftpClient.changeWorkingDirectory(directory)){
//如果远程目录不存在,则递归创建远程服务器目录
int start=0;
int end = 0;
if(directory.startsWith("/")){
start = 1;
}else{
start = 0;
}
end = directory.indexOf("/",start);
while(true){
String subDirectory = remote.substring(start,end);
if(!ftpClient.changeWorkingDirectory(subDirectory)){
if(ftpClient.makeDirectory(subDirectory)){
ftpClient.changeWorkingDirectory(subDirectory);
}else {
System.out.println("创建目录失败");
return UploadStatus.Create_Directory_Fail;
}
}
start = end + 1;
end = directory.indexOf("/",start);
//检查所有目录是否创建完毕
if(end <= start){
break;
}
}
}
}
//检查远程是否存在文件
FTPFile[] files = ftpClient.listFiles(remoteFileName);
if(files.length == 1){
long remoteSize = files[0].getSize();
File f = new File(local);
long localSize = f.length();
if(remoteSize==localSize){
return UploadStatus.File_Exits;
}else if(remoteSize > localSize){
return UploadStatus.Remote_Bigger_Local;
}
//尝试移动文件内读取指针,实现断点续传
InputStream is = new FileInputStream(f);
if(is.skip(remoteSize)==remoteSize){
ftpClient.setRestartOffset(remoteSize);
if(ftpClient.storeFile(remote, is)){
return UploadStatus.Upload_From_Break_Success;
}
}
//如果断点续传没有成功,则删除服务器上文件,重新上传
if(!ftpClient.deleteFile(remoteFileName)){
return UploadStatus.Delete_Remote_Faild;
}
is = new FileInputStream(f);
if(ftpClient.storeFile(remote, is)){
result = UploadStatus.Upload_New_File_Success;
}else{
result = UploadStatus.Upload_New_File_Failed;
}
is.close();
}else {
InputStream is = new FileInputStream(local);
if(ftpClient.storeFile(remoteFileName, is)){
result = UploadStatus.Upload_New_File_Success;
}else{
result = UploadStatus.Upload_New_File_Failed;
}
is.close();
}
return result;
}
/**
* 断开与远程服务器的连接
* @throws IOException
*/
public void disconnect() throws IOException{
if(ftpClient.isConnected()){
ftpClient.disconnect();
}
}
public static void main(String[] args) {
ContinueFTP myFtp = new ContinueFTP();
try {
myFtp.connect("192.168.21.171", 21, "test", "test");
System.out.println(myFtp.upload("E:\\VP6.flv", "/MIS/video/VP6.flv"));
myFtp.disconnect();
} catch (IOException e) {
System.out.println("连接FTP出错:"+e.getMessage());
}
}
}
- java实现FTP断点上传.rar (2.3 KB)
- 下载次数: 69
发表评论
-
Java中文件与字节数组转换
2015-01-09 14:19 6113Java文件与字节数组转换 /** * 返回一 ... -
Eclipse中的快速Java代码模板使用 java editor template
2014-10-31 11:11 4942java editor template Eclipse ... -
java回调函数
2014-06-29 14:55 1091java回调函数 所谓回调,就是客户程序C调用 ... -
java中double型数据四舍五入
2014-03-14 19:38 1266java中double型数据四舍五入 /** * ... -
Java线程池介绍以及简单示例
2014-01-23 17:34 1051Java线程池介绍以及简 ... -
eclipse中jar包关联源代码与取消关联
2014-01-13 11:55 2633在eclipse中查看Android源代码 当我们 ... -
Java解读NIO Socket非阻塞模式
2013-11-01 13:48 857Java解读NIO Socket非阻塞模式 Jav ... -
设计模式之java接口和java抽象类
2013-10-09 09:05 1239java接口和java抽象类 java不允许多重 ... -
Java学习之路:不走弯路,就是捷径
2013-04-13 18:37 941Java学习之路:不走弯路,就是捷径 1.如何学习 ... -
java.util.concurrent.ExecutorService与Executors例子的简单剖析
2013-03-25 15:11 1810java.util.concurrent.ExecutorS ... -
Socket
2012-12-23 17:30 1041Socket 定义: 两个java应用程序可通过一个 ... -
jdom读取xml文件
2012-08-19 19:53 1193用JDOM读取XML文件需先 ... -
java 获取HTTP 头部信息
2012-07-21 19:16 2282java 获取HTTP 头部信息 public c ... -
远程下载、图片压缩到指定大小、FTP的上传、文件的删除 /copy
2012-06-12 11:45 2055package com.cmmb.mall.serv ... -
java读取properties配置文件
2012-06-12 11:25 1159public static void main(Stri ... -
使用HTTP方式下载文件( 仅支持另存为)
2012-04-20 18:07 2558public class DownFile extend ... -
java 读取文件
2012-04-12 20:39 1035读取:将磁盘文件数据 ... -
java操作Excel文件
2012-04-06 11:56 1166JAVA EXCEL API 简介 Java Exce ... -
java 调用视频转换工具ffmpeg
2012-03-28 20:41 1692import java.io.File; impor ... -
JAVA对存储过程的调用方法
2012-03-01 11:55 4041一:Java如何实现对存 ...
相关推荐
在学习Java FTP断点续传的过程中,还可以参考`jsymxx225.zip`中提供的源码,该压缩包可能包含了一个完整的FTP断点续传实现示例。此外,`下载及使用说明.txt`文件可能包含了解压缩和运行代码的详细步骤,而`更多Java...
Java实现FTP断点续传是一项在开发中常遇到的需求,主要应用于大文件传输或网络不稳定时确保文件完整传输。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而断点续传则是FTP的一个重要特性,允许...
标题"XuChuanFTP_Java_FTP断点续传"可能是指一个Java实现的FTP客户端库或者一个示例项目,专注于支持FTP的断点续传功能。这个项目可能是为了帮助开发者更方便地处理大文件的上传任务,尤其是在网络不稳定的情况下。 ...
java实现FTP多线程断点续传,上传下载! - java学习与交流 - j2ee学习网 - j2ee学习网 (2012年5月21日) 用 Java 实现断点续传 (HTTP) (2012年5月21日) Java写的支持断点续传的FTP--crybaby的博客 (2012年5月21日) ...
下面是一个简单的示例代码片段,展示如何使用Java实现FTP断点续传的基本流程: ```java import org.apache.commons.net.ftp.FTPClient; public class FtpClientExample { public static void main(String[] args)...
java实现ftp断点续传,上传文件到FTP服务器,支持断点续传,同时支持LINUX主机,代码里面包括了比较多的java网络操作类,比如连接FTP的常规类、递归创建远程服务器目录 上传文件到服务器,新上传和断点续传操作,远程...
### Java实现FTP多线程断点续传:深入解析与技术要点 在现代软件开发中,数据传输是一项基本且关键的任务,特别是在处理...通过理解并应用上述关键技术点,开发者可以在自己的项目中实现高效、稳定的FTP断点续传功能。
在Java FTP中,通过检查文件的大小和修改时间,可以确定是否已经部分下载,然后使用FTPClient的`restart`方法指定新的起始位置来实现断点续传。 多线程在Java FTP中常用于提高文件下载速度。通过创建多个线程,每个...
Apache FTP库为Java开发者提供了丰富的功能,包括主被动模式的切换、断点续传以及错误处理等,大大简化了FTP(File Transfer Protocol)客户端的实现。 首先,我们来详细了解主被动模式。在FTP协议中,有两种工作...
在这个Java FTP项目中,我们关注的是如何实现FTP的断点续传功能,以及如何利用Java进行多线程FTP上传。 断点续传是FTP的一个重要特性,它允许在文件传输中断后从上次停止的地方继续,而不是重新开始整个文件的传输...
以下是一个简化的多线程FTP断点续传实现步骤: 1. **初始化连接**:创建一个FTP客户端线程,负责与服务器建立连接,登录,并切换到目标目录。 2. **检查文件状态**:客户端线程询问服务器目标文件是否存在,如果...
Java Apache FTP断点续传是一种在Java编程中实现FTP(文件传输协议)功能的重要技术,特别是在大文件传输时,能够提高效率并节省网络资源。Apache Commons Net是Java库,提供了丰富的FTP客户端功能,包括断点续传。...
在这个资料包中,`ftpcode.rar`可能包含了一个实现以上步骤的Java FTP断点续传示例代码,你可以通过查看和运行这个示例来学习如何在实际项目中应用此技术。`ftpjar.rar`可能包含了一些必要的jar包,比如Apache ...
Java FTP多线程批量断点续传是一种在Java编程中实现高效、稳定文件传输的方法,尤其适用于大文件的上传和下载。在这个过程中,我们利用FTP(File Transfer Protocol)协议,结合多线程技术和断点续传功能,可以显著...
本示例"java大文件分块上传断点续传demo"提供了一个完整的解决方案,它允许用户将大文件分块上传,并在上传过程中支持断点续传。 首先,理解"分块上传"的概念。分块上传是将一个大文件分割成多个小块,然后逐个上传...
Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器交互的一种技术,它允许程序员编写应用程序来上传、下载文件,并实现断点续传功能。在本文中,我们将深入探讨Java FTP上传、下载以及断点续传的核心...
java,minio实现分片上传、秒传、断点续传,附docker安装文档