- 浏览: 697802 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yzs5273:
没什么用。都试过了
WIN7下CS不能全屏的解决方法 -
di1984HIT:
不错,学习了
读取本地计算机中的安装程序列表 -
ffedu:
[flash=200,200][url][img][list] ...
linux/unix中如何用find命令详解,非常详细的介绍,比man find强100倍(转) -
lintghi:
...
Log4j使用相对路径指定log文件及使用总结 -
nick.s.ni:
唉,Java中引用的包没有介绍啊,如果数据库用UTF-8的格式 ...
Oracle 中Java 对象与PL/SQL类型的映射及使用(转)
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); } } }
发表评论
-
Transfer
2017-06-29 23:03 0Find connections count: ... -
Discover the Mystery of Metaspace
2017-06-23 16:47 0The JDK 8 HotSpot JVM is now u ... -
Command Line JMX Client
2014-12-29 13:12 2595Command Line Parser: GNUComman ... -
Something about JVM class loading and initialization
2014-05-09 10:04 1032Class loading stages: Loadin ... -
When a class is loaded and initialized in JVM - Java
2014-05-08 19:09 988from: http://javarevisited.blo ... -
【深入Java虚拟机】之四:类加载机制
2014-05-08 15:12 899转载请注明出处:http://blog.csdn.net/n ... -
Java Reflection - Dynamic Class Loading and Reloading
2014-05-08 12:04 942From: http://tutorials.jenkov. ... -
Java 类加载与初始化
2014-02-19 19:12 810转载自:http://www.cnblogs.c ... -
javax.management.StandardMBean: When and Why. (Reposted)
2013-12-26 15:34 1084Q: When is a Standard MBean no ... -
JVM调优的"标准参数"的各种陷阱(转)
2013-11-11 19:55 2051From: http://hllvm.group.itey ... -
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
2013-11-11 11:05 1019(From: http://www.oracle.com/ ... -
An article about TLAB
2013-11-11 10:57 756(From: https://blogs.oracle.co ... -
【JVM】HotSpot JVM内存管理和GC策略总结(转)
2013-11-07 23:39 592JVM的相关知识是学习java高级特性必须要去深入学习的。平 ... -
jstat分析VM内存
2013-11-07 16:41 904Jstat 是JDK自带的一个轻量级小工具。全称“Java ... -
java的GridBagLayout网格包布局管理器使用详解 (转)
2013-11-01 16:44 0网格包布局管理是最复 ... -
java动态跟踪分析工具BTrace实现原理
2013-09-01 12:34 1267转自:http://kenwublog.com ... -
Java synchronize用法(转)
2012-11-05 00:20 1207在多个并发线程之间共用资源,就需要进行同步处理。Java虚拟机 ... -
Interview material collection
2012-07-09 23:05 11901. Why can't static methods be ... -
不要重复 DAO!(转)
2011-12-29 22:17 1242使用 Hibernate 和 Spri ... -
JVM 诊断工具(转)
2011-11-25 12:00 17611.jinfo 描述:输出给定 java 进程所有的配置信 ...
相关推荐
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(File Transfer Protocol)断点续传是一项重要的功能,它允许用户在文件传输中断后从上次停止的地方继续,这对于处理大文件或网络不稳定情况下的文件传输非常有用。本文将深入探讨如何使用Java...
而"多线程"和"断点"这两个文件名可能是指相关示例代码或文档,可以进一步帮助你理解和实践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断点续传是一项在开发中常遇到的需求,主要应用于大文件传输或网络不稳定时确保文件完整传输。FTP(File Transfer Protocol)是互联网上用于文件传输的标准协议,而断点续传则是FTP的一个重要特性,允许...
Java断点续传技术在实际应用中广泛用于文件上传和下载工具,如迅雷、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断点续传技术涉及网络编程、文件操作和异常处理等多个方面,通过合理的实现可以显著提高大文件下载的效率和用户体验。理解并掌握这些知识点对于开发高效的文件下载应用至关重要。
Java Apache FTP断点续传是一种在Java编程中实现FTP(文件传输协议)功能的重要技术,特别是在大文件传输时,能够提高效率并节省网络资源。Apache Commons Net是Java库,提供了丰富的FTP客户端功能,包括断点续传。...