- 浏览: 1530703 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
http://crybaby2005.bokee.com/3148701.html
public class FileInfo { public String name; public String description; public FileInfo(String nm, String dscrp) { name = nm; description = dscrp; } }
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.InterruptedIOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.net.UnknownHostException; import java.util.StringTokenizer; import java.util.Vector; public class FTPSearch extends Thread { String _host; static final int PORT = 21; ServerSocket ss; Socket _ds; Socket _sc; PrintStream _out; String _hostAddress; BufferedReader _in; BufferedReader _dataIn; String _reply; protected StringBuffer _log = new StringBuffer(10000); Vector _result; String _user; String _pass; public FTPSearch(String ip, String user, String pass) { _host = ip; _user = user; _pass = pass; _result = new Vector(); } public FTPSearch(String ip) { _host = ip; _user = "anonymous"; _pass = "name_zm@sohu.com"; _result = new Vector(); } protected boolean login() throws UnknownHostException, IOException { boolean successful = false; StringBuffer reply = new StringBuffer(); _sc = new Socket(_host, PORT); _hostAddress = _sc.getLocalAddress().getHostAddress().replace('.', ','); _sc.setSoTimeout(15000); _out = new PrintStream(_sc.getOutputStream(), true); _in = new BufferedReader(new InputStreamReader(_sc.getInputStream())); reply.append(readReply().trim()); if (reply.toString().startsWith("220")) if (comm("USER " + _user)) if (comm("PASS " + _pass)) successful = true; comm("TYPE A"); return successful; } protected String getCurrentDir() throws IOException { String currentDir = null; if (comm("PWD")) { StringTokenizer st = new StringTokenizer(_reply); st.nextToken(); StringBuffer rtDir = new StringBuffer(st.nextToken()); currentDir = rtDir.substring(1, rtDir.length() - 1); } return currentDir; } public void search() throws IOException, InterruptedException { try { for (int i = 0; i < 5; i++) { if (login()) break; System.out.println("Wait 10 seconds to try again..."); sleep(10000); } scan(); logout(); } catch (IOException ex) { } finally { PrintStream out = new PrintStream(new FileOutputStream("Log.txt")); out.println(_log); out.close(); printResult("result.txt"); } } protected void scan() throws IOException { Vector fileNames = new Vector(); tellPort(); comm("LIST -R"); // Get data_connection's InputStream. try { _ds = ss.accept(); System.out.println(ss.toString()); } catch (IOException ex) { ss.close(); } _dataIn = new BufferedReader( new InputStreamReader(_ds.getInputStream())); System.out.println("Scanning now.Please waiting......"); // Read directory content try { String temp = ""; do { temp = _dataIn.readLine(); if (temp == null) break; fileNames.add(temp); } while (temp != null); } catch (InterruptedIOException ex) { System.out.println("Caught InterruptedIOException1:" + ex); } // Read end infomation try { do { String temp = _in.readLine(); _log.append(temp + "r"); System.out.println(temp); } while (_in.ready()); } catch (InterruptedIOException ex) { System.out.println("Caught InterruptedIOException2:" + ex); } _result = fileNames; } public Vector getResult() { return _result; } public StringBuffer getLog() { return _log; } public static Vector parse() throws FileNotFoundException, IOException { Vector result = new Vector(); FileInputStream fileIn = new FileInputStream("result.txt"); BufferedReader fReader = new BufferedReader(new InputStreamReader( fileIn)); // int size=fileIn.available(); // System.out.println(String.valueOf(size)); String dir = "/"; System.out.println("Parsing now.Please wait......"); while (fReader.ready()) { String temp = fReader.readLine(); StringTokenizer tt = new StringTokenizer(temp); if (tt.countTokens() == 1) { if (temp.startsWith("/")) dir = temp.replace(':', ' ').trim() + "/"; else dir = "/" + temp.replace(':', ' ').trim() + "/"; // parseResult // .add( // dir); // continue // ; } if ((!temp.equals("")) && (temp.startsWith("-") || temp.startsWith("b") || temp.startsWith("c") || temp.startsWith("l"))) { for (int i = 0; i < 4; i++) tt.nextToken(); String description = ""; for (int i = 0; i < 4; i++) description = description + tt.nextToken() + " "; String cont = ""; do { cont = cont + tt.nextToken() + " "; } while (tt.hasMoreTokens()); result.add(new FileInfo(dir + cont.trim(), description.trim())); continue; } else if (temp.startsWith("d")) { for (int i = 0; i < 4; i++) tt.nextToken(); String description = ""; for (int i = 0; i < 4; i++) description = description + tt.nextToken() + " "; String cont = ""; do { cont = cont + tt.nextToken() + " "; } while (tt.hasMoreTokens()); result.add(new FileInfo(dir + cont.trim() + "/", description .trim())); continue; } else if (temp.equals("")) { continue; } } return result; } protected void logout() throws IOException { comm("QUIT"); } protected void printResult(String resultFile) throws IOException { PrintStream out = new PrintStream(new FileOutputStream(resultFile)); int len = _result.size(); for (int i = 0; i < len; i++) { out.println(_result.elementAt(i)); } out.close(); } protected boolean comm(String command) throws IOException { boolean success = false; _out.println(command); System.out.println("<COMMAND>" + command); _log.append("<COMMAND>" + command + "r"); _reply = readReply(); if (command.startsWith("USER")) { success = _reply.startsWith("331") ? true : false; } else if (command.startsWith("PASS")) { success = _reply.startsWith("230") ? true : false; try { readReply(); } catch (InterruptedIOException ex) { } } else if (command.equals("TYPE A")) { success = _reply.startsWith("200") ? true : false; } else if (command.startsWith("PORT")) { success = _reply.startsWith("200") ? true : false; } else if (command.startsWith("LIST")) { success = _reply.startsWith("150") ? true : false; } else if (command.startsWith("NLST")) { success = _reply.startsWith("150") ? true : false; } else if (command.equals("PWD")) { success = _reply.startsWith("257") ? true : false; } else if (command.startsWith("STAT")) { success = _reply.startsWith("211") ? true : false; } else if (command.equals("SYST")) { success = _reply.startsWith("215") ? true : false; } else if (command.startsWith("SITE")) { success = _reply.startsWith("214") ? true : false; } else if (command.equals("QUIT")) { success = _reply.startsWith("221") ? true : false; } return success; } public static void printVector(Vector vct) { int size = vct.size(); for (int i = 0; i < size; i++) { System.out.println(vct.elementAt(i)); } } protected String readReply() throws IOException, InterruptedIOException { StringBuffer reply = new StringBuffer(); do { reply.append(_in.readLine() + "r"); } while (_in.ready()); System.out.println(reply); _log.append(reply); _reply = reply.toString(); return _reply; } private int getDataPort() { int port = _sc.getLocalPort() + 1; return port; } private void tellPort() throws IOException { try { int port = getDataPort(); System.out.println("Get data port:" + port); int x = (int) Math.round((port / 256) - 0.5); int y = port - x * 256; try { ss = new ServerSocket(port); } catch (IOException ex) { System.out .println("IOException in Method tellPort() in Class ftpc--" + ex); } comm("PORT " + _hostAddress + "," + x + "," + y); } finally { } } public static void main(String arg[]) { try { FTPSearch client = new FTPSearch("202.114.2.2"); client.search(); client.parse(); } catch (Exception ex) { System.out.println(ex); } } }
public class demo { public static void main(String arg[]) { try { FTPSearch client = new FTPSearch("192.168.0.1"); client.search(); java.util.Vector temp = client.parse(); int size = temp.size(); for (int i = 0; i < size; i++) { FileInfo ttt = ((FileInfo) temp.elementAt(i)); System.out.println(ttt.name + " " + ttt.description); } } catch (Exception ex) { System.out.println(ex); } } }
发表评论
-
HttpRequestClient
2018-11-21 17:45 631http请求工具 public class WebCon ... -
Spring boot 环境下配置CKEditor添加google map
2017-07-05 14:39 1263本文档基于已经搭建好基础ckeditor的环境上。如:ht ... -
post json
2015-12-30 12:35 549方法一: public static String doP ... -
maven打包成可执行的jar包(package a runnable jar)
2015-04-23 22:01 2225第一步:利用maven-jar-plugin生成当前工程的 ... -
自定义ObjectMapper
2015-03-02 16:57 7776d import java.io.IOExcept ... -
JsonObjectMapper
2015-02-05 10:41 1401import com.fasterxml.jackson. ... -
HttpServletRequestWrapper
2014-10-12 08:15 598请求提交后替换HTML字符 import javax.s ... -
配置javamelody
2014-09-12 14:03 1280参考后面地址修改整理。http://my.oschina.n ... -
getTrace()
2014-08-06 09:14 572/** * 将e.printStackTrace() ... -
获取java对象在内存的地址
2014-07-28 14:59 2868引用stackflow的文章:http://stackove ... -
JMeter入门:Java Request实例
2014-05-08 15:41 2360转自:http://softtest.chin ... -
解决在IE下下载时文件名乱码
2014-01-09 11:24 1063String agent = request.getHead ... -
第一节:编译自定义的Hadoop核心包,去除用户权限检查
2013-11-30 11:59 1073本文参考eclipse连接远程hadoop集群开发时0700 ... -
第二节:win 7下编译eclispe hadoop plugin
2013-11-29 19:12 839本文参照后面地址的Linux编译方式:http: ... -
使用log4j为Tomcat输出日志
2013-11-01 16:42 10352转自:http://hi.baidu.com/y ... -
xStream开发HTTP的XML内容
2013-07-03 09:58 10621、编写自定义XPPDriver代码: package ... -
HttpURLConnection or URLConnection post xml content to web server
2013-05-31 01:56 2065客户端示例1: package client; ... -
java nio学习笔记
2013-03-21 21:41 0直接缓冲区被用于与通道和固有I/O例程交互。它们 ... -
Jsch使用
2012-12-10 17:07 2558Jsch shell模式下的代码示例: 参考: ... -
Exe4j破解_Exe4j注册码
2012-12-06 17:35 33557exe4j是个很好的打包利器,官方下载地址:http://ww ...
相关推荐
Java写的支持断点续传的FTP--crybaby的博客 (2012年5月21日) Java写的支持断点续传的FTP - 罗索工作室 (2012年5月21日) java实现FTP多线程断点续传,上传下载!_qhghw的空间_百度空间 (2012年5月21日)
标题"XuChuanFTP_Java_FTP断点续传"可能是指一个Java实现的FTP客户端库或者一个示例项目,专注于支持FTP的断点续传功能。这个项目可能是为了帮助开发者更方便地处理大文件的上传任务,尤其是在网络不稳定的情况下。 ...
Java Apache FTP支持断点续传是一项重要的网络编程技术,它使得大文件的传输更加高效和可靠。Apache FTP库为Java开发者提供了丰富的功能,包括主被动模式的切换、断点续传以及错误处理等,大大简化了FTP(File ...
而"多线程"和"断点"这两个文件名可能是指相关示例代码或文档,可以进一步帮助你理解和实践Java FTP的多线程下载和断点续传。 在实际应用中,还需要考虑其他因素,如错误处理、网络状况的监控、文件完整性检查等。...
java实现ftp断点续传,上传文件到FTP服务器,支持断点续传,同时支持LINUX主机,代码里面包括了比较多的java网络操作类,比如连接FTP的常规类、递归创建远程服务器目录 上传文件到服务器,新上传和断点续传操作,远程...
### Java实现FTP多线程断点续传:深入解析与技术要点 在现代软件开发中,数据传输是一项基本且关键的任务,特别是在处理大文件时,断点续传功能显得尤为重要。断点续传允许在网络连接中断后恢复传输,避免了重新...
下面是一个简单的示例代码片段,展示如何使用Java实现FTP断点续传的基本流程: ```java import org.apache.commons.net.ftp.FTPClient; public class FtpClientExample { public static void main(String[] args)...
本示例"java大文件分块上传断点续传demo"提供了一个完整的解决方案,它允许用户将大文件分块上传,并在上传过程中支持断点续传。 首先,理解"分块上传"的概念。分块上传是将一个大文件分割成多个小块,然后逐个上传...
Java FTP多线程批量断点续传是一种在Java编程中实现高效、稳定文件传输的方法,尤其适用于大文件的上传和下载。在这个过程中,我们利用FTP(File Transfer Protocol)协议,结合多线程技术和断点续传功能,可以显著...
Java断点续传技术在实际应用中广泛用于文件上传和下载工具,如迅雷、FTP客户端等,它有效地解决了大文件传输过程中的网络问题,提高了用户体验。了解并掌握这种技术对于开发高效的网络应用至关重要。
Java实现FTP断点续传是一项在开发中常遇到的需求,主要应用于大文件传输或网络不稳定时确保文件完整传输。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而断点续传则是FTP的一个重要特性,允许...
在这个Java FTP项目中,我们关注的是如何实现FTP的断点续传功能,以及如何利用Java进行多线程FTP上传。 断点续传是FTP的一个重要特性,它允许在文件传输中断后从上次停止的地方继续,而不是重新开始整个文件的传输...
Java 实现 FTP 断点续传是一项常见的网络编程任务,主要应用于大文件传输,以提高文件上传或下载的效率和可靠性。FTP(File Transfer Protocol)是互联网上用于在不同计算机之间传输文件的标准协议。断点续传允许在...
Java FTP(File Transfer Protocol)是Java编程中用于与FTP服务器交互的一种技术,它允许程序员编写应用程序来上传、下载文件,并实现断点续传功能。在本文中,我们将深入探讨Java FTP上传、下载以及断点续传的核心...
`FtpHelper`类中的`download`方法实现了从FTP服务器下载文件的功能,且支持断点续传。该方法首先设置FTPClient的工作模式为被动模式,并将文件传输类型设置为二进制,这是为了确保文件数据的完整性和准确性。接下来...
功能:断点续传的上传、下载。 运行:TestContinueFtp。 jar包:commons-net-1.4.0.jar 默认为主动模式,占用端口为1080。 备注:含jar包。
java,minio实现分片上传、秒传、断点续传,附docker安装文档
综上所述,Java断点续传技术涉及网络编程、文件操作和异常处理等多个方面,通过合理的实现可以显著提高大文件下载的效率和用户体验。理解并掌握这些知识点对于开发高效的文件下载应用至关重要。
Java Apache FTP断点续传是一种在Java编程中实现FTP(文件传输协议)功能的重要技术,特别是在大文件传输时,能够提高效率并节省网络资源。Apache Commons Net是Java库,提供了丰富的FTP客户端功能,包括断点续传。...