- 浏览: 761777 次
- 性别:
- 来自: 郑州
-
文章分类
- 全部博客 (396)
- JAVA (50)
- ORACLE (22)
- HIBERNATE (1)
- SPRING (26)
- STRUTS (4)
- OTHERS (0)
- MYSQL (11)
- Struts2 (16)
- JS (33)
- Tomcat (6)
- DWR (1)
- JQuery (26)
- JBoss (0)
- SQL SERVER (0)
- XML (10)
- 生活 (3)
- JSP (11)
- CSS (5)
- word (1)
- MyEclipse (7)
- JSTL (1)
- JEECMS (2)
- Freemarker (8)
- 页面特效 (1)
- EXT (2)
- Web前端 js库 (2)
- JSON http://www.json.org (3)
- 代码收集 (1)
- 电脑常识 (6)
- MD5加密 (0)
- Axis (0)
- Grails (1)
- 浏览器 (1)
- js调试工具 (1)
- WEB前端 (5)
- JDBC (2)
- PowerDesigner (1)
- OperaMasks (1)
- CMS (1)
- Java开源大全 (2)
- 分页 (28)
- Eclipse插件 (1)
- Proxool (1)
- Jad (1)
- Java反编译 (2)
- 报表 (6)
- JSON (14)
- FCKeditor (9)
- SVN (1)
- ACCESS (1)
- 正则表达式 (3)
- 数据库 (1)
- Flex (3)
- pinyin4j (2)
- IBATIS (3)
- probe (1)
- JSP & Servlet (1)
- 飞信 (0)
- AjaxSwing (0)
- AjaxSwing (0)
- Grid相关 (1)
- HTML (5)
- Guice (4)
- Warp framework (1)
- warp-persist (1)
- 服务器推送 (3)
- eclipse (1)
- JForum (5)
- 工具 (1)
- Python (1)
- Ruby (1)
- SVG (3)
- Joda-Time日期时间工具 (1)
- JDK (3)
- Pushlet (2)
- JSP & Servlet & FTP (1)
- FTP (6)
- 时间与效率 (4)
- 二维码 (1)
- 条码/二维码 (1)
最新评论
-
ctrlc:
你这是从web服务器上传到FTP服务器上的吧,能从用户电脑上上 ...
jsp 往 FTP 上传文件问题 -
annybz:
说的好抽象 为什么代码都有两遍。这个感觉没有第一篇 和第二篇 ...
Spring源代码解析(三):Spring JDBC -
annybz:
...
Spring源代码解析(一):IOC容器 -
jie_20:
你确定你有这样配置做过测试? 请不要转载一些自己没有测试的文档 ...
Spring2.0集成iReport报表技术概述 -
asd51731:
大哥,limit传-1时出错啊,怎么修改啊?
mysql limit 使用方法
某些数据交换,我们需要通过ftp来完成。
sun.net.ftp.FtpClient 可以帮助我们进行一些简单的ftp客户端功能:下载、上传文件。
但如遇到创建目录之类的就无能为力了,我们只好利用第三方源码,比如 com.enterprisedt.net.ftp.FTPClient
下面写一些sun.net.ftp.FtpClient 的使用方法。
1、引入包
import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import sun.net.*; import sun.net.ftp.FtpClient;
2、我们建一个叫做FtpUtil的class
/** * connectServer * 连接ftp服务器 * @throws java.io.IOException * @param path 文件夹,空代表根目录 * @param password 密码 * @param user 登陆用户 * @param server 服务器地址 */ public void connectServer(String server, String user, String password, String path) throws IOException { // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 ftpClient = new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); //path是ftp服务下主目录的子目录 if (path.length() != 0) ftpClient.cd(path); //用2进制上传、下载 ftpClient.binary(); } /** * upload * 上传文件 * @throws java.lang.Exception * @return -1 文件不存在 * -2 文件内容为空 * >0 成功上传,返回文件的大小 * @param newname 上传后的新文件名 * @param filename 上传的文件 */ public long upload(String filename,String newname) throws Exception { long result = 0; TelnetOutputStream os = null; FileInputStream is = null; try { java.io.File file_in = new java.io.File(filename); if (!file_in.exists()) return -1; if (file_in.length()==0) return -2; os = ftpClient.put(newname); result = file_in.length(); is = new FileInputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /** * upload * @throws java.lang.Exception * @return * @param filename */ public long upload(String filename) throws Exception { String newname = ""; if (filename.indexOf("/")>-1) { newname = filename.substring(filename.lastIndexOf("/")+1); }else { newname = filename; } return upload(filename,newname); } /** * download * 从ftp下载文件到本地 * @throws java.lang.Exception * @return * @param newfilename 本地生成的文件名 * @param filename 服务器上的文件名 */ public long download(String filename,String newfilename) throws Exception { long result = 0; TelnetInputStream is = null; FileOutputStream os = null; try { is = ftpClient.get(filename); java.io.File outfile = new java.io.File(newfilename); os = new FileOutputStream(outfile); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); result = result + c; } } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /** * 取得某个目录下的所有文件列表 * */ public List getFileList(String path) { List list = new ArrayList(); try { DataInputStream dis = new DataInputStream(ftpClient.nameList(path)); String filename = ""; while((filename=dis.readLine())!=null) { list.add(filename); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * closeServer * 断开与ftp服务器的链接 * @throws java.io.IOException */ public void closeServer() throws IOException { try { if (ftpClient != null) { ftpClient.closeServer(); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String [] args) throws Exception { FtpUtil ftp = new FtpUtil(); try { //连接ftp服务器 ftp.connectServer("10.163.7.15", "cxl", "1", "info2"); /** 上传文件到 info2 文件夹下 */ System.out.println("filesize:"+ftp.upload("f:/download/Install.exe")+"字节"); /** 取得info2文件夹下的所有文件列表,并下载到 E盘下 */ List list = ftp.getFileList("."); for (int i=0;i<list.size();i++) { String filename = (String)list.get(i); System.out.println(filename); ftp.download(filename,"E:/"+filename); } } catch (Exception e) { /// }finally { ftp.closeServer(); } } }
以下为扩展代码:
import java.io.DataInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import sun.net.*; import sun.net.ftp.FtpClient; //2、我们建一个叫做FtpUtil的class public class FtpUtil{ //创建ftp服务器 FtpClient ftpClient; /** * connectServer * 连接ftp服务器 * @throws java.io.IOException * @param path 文件夹,空代表根目录 * @param password 密码 * @param user 登陆用户 * @param server 服务器地址 */ public void connectServer(String server, String user, String password, String path) throws IOException { // server:FTP服务器的IP地址;user:登录FTP服务器的用户名 // password:登录FTP服务器的用户名的口令;path:FTP服务器上的路径 ftpClient = new FtpClient(); //开启服务 ftpClient.openServer(server); //登录 ftpClient.login(user, password); //path是ftp服务下主目录的子目录 if (path.length() != 0) ftpClient.cd(path); //用2进制上传、下载 ftpClient.binary(); } /** * upload * 上传文件 * @throws java.lang.Exception * @return -1 文件不存在 * -2 文件内容为空 * >0 成功上传,返回文件的大小 * @param newname 上传后的新文件名 * @param filename 上传的文件 */ public long upload(String filename,String newname) throws Exception { long result = 0; //ftp输出流 TelnetOutputStream os = null; FileInputStream is = null; try { java.io.File file_in = new java.io.File(filename); if (!file_in.exists()) return -1; if (file_in.length()==0) return -2; //ftpclient的put方法 调用后将路径传进去 返回TelnetOutputStream 就可以进行文件上传操作了 os = ftpClient.put(newname); result = file_in.length(); is = new FileInputStream(file_in); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); } } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /** * upload * @throws java.lang.Exception * @return * @param filename */ public long upload(String filename) throws Exception { String newname = ""; if (filename.indexOf("/")>-1) { newname = filename.substring(filename.lastIndexOf("/")+1); }else { newname = filename; } return upload(filename,newname); } /** * download * 从ftp下载文件到本地 * @throws java.lang.Exception * @return * @param newfilename 本地生成的文件名 * @param filename 服务器上的文件名 */ public long download(String filename,String newfilename) throws Exception { long result = 0; TelnetInputStream is = null; FileOutputStream os = null; try { is = ftpClient.get(filename); java.io.File outfile = new java.io.File(newfilename); os = new FileOutputStream(outfile); byte[] bytes = new byte[1024]; int c; while ((c = is.read(bytes)) != -1) { os.write(bytes, 0, c); result = result + c; } } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } } return result; } /** * 取得某个目录下的所有文件列表 * */ public List getFileList(String path) { List list = new ArrayList(); try { DataInputStream dis = new DataInputStream(ftpClient.nameList(path)); String filename = ""; while((filename=dis.readLine())!=null) { list.add(filename); } } catch (Exception e) { e.printStackTrace(); } return list; } /** * closeServer * 断开与ftp服务器的链接 * @throws java.io.IOException */ public void closeServer() throws IOException { try { if (ftpClient != null) { ftpClient.closeServer(); } } catch (IOException e) { e.printStackTrace(); } } public static void main(String [] args) throws Exception { FtpUtil ftp = new FtpUtil(); try { //连接ftp服务器 ftp.connectServer("172.19.11.103", "weblogic", "weblogic", "/home/files"); ftp.createDir("files"); /** 上传文件到 files 文件夹下 */ System.out.println("filesize:"+ftp.upload("f:/download/Install.exe")+"字节"); /** 取得files文件夹下的所有文件列表,并下载到 E盘下 */ List list = ftp.getFileList("."); for (int i=0;i<list.size();i++) { String filename = (String)list.get(i); System.out.println(filename); ftp.download(filename,"E:/"+filename); } } catch (Exception e) { /// }finally { ftp.closeServer(); } } //在ftp服务器上穿件文件夹 public boolean createDir(String path) throws Exception{ //进入到home文件夹下 ftpClient.cd("/home"); //创建远程文件夹 //远程命令包括 //USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT<br> // PASS PASV STOR REST CWD STAT RMD XCUP OPTS<br> // ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH<br> // REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ<br> // QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT<br> // 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br> // ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br> // ftpclient.readServerResponse一定要在sendServer后调用<br> // nameList("/test")获取指目录下的文件列表<br> // XMKD建立目录,当目录存在的情况下再次创建目录时报错<br> // XRMD删除目录<br> // DELE删除文件<br> //通过远程命令 穿件一个files文件夹 ftpClient.sendServer("MKD "+ path + "/r/n"); //这个方法必须在 这两个方法中间调用 否则 命令不管用 ftpClient.binary(); ftpClient.readServerResponse(); return false; } }
发表评论
-
【转】使用FtpClient类实现FTP文件上传下载
2011-11-24 22:48 1352下面是FtpClient类的一些介绍: sun.net.f ... -
sun.net.TelnetProtocolException: misplaced CR in input的异常
2011-11-24 21:50 2026比如要下载ftp://ftp.xx.com/index.h ... -
Java判断Ftp服务器目录是否存在,若不存在创建目录 .
2011-11-24 21:34 11578解决方法1: package com.soft4j. ... -
使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持
2011-11-24 21:31 1171利用org.apache.commons.net.ftp包实现 ... -
jsp如何下载FTP上的文件 .
2011-11-21 18:19 1428一共两段程序,可对比一下找出区别 ①---ftp协议方式 ...
相关推荐
这两种方法都是Java中处理FTP任务的常见选择,尽管`sun.net.ftp.FtpClient`是Sun Microsystems的一个内部API,其稳定性和支持可能不如Apache Commons Net库。 首先,让我们讨论Apache Commons Net库。这个开源库...
import org.apache.commons.net.ftp.FTPClient; FTPClient ftpClient = new FTPClient(); try { ftpClient.connect("ftp.server.com", 21); // 连接到FTP服务器 ftpClient.login("username", "password"); // ...
Apache的Java FTPClient库是一个强大的工具,用于在Java应用程序中执行FTP(文件传输协议)操作。这个库使得与FTP服务器的交互变得简单,允许开发者轻松地上传、下载、列出、移动和删除远程文件。以下是对这个主题的...
Sun JDK 提供了一个简单的 FTP 客户端实现,位于 `sun.net.ftp` 包下。以下是一个基本的示例,展示了如何连接、登录 FTP 服务器以及执行 FTP 命令: ```java import sun.net.ftp.FtpClient; import sun.net.ftp...
以下是一个简单的FTP客户端实现示例,基于Java内置的`sun.net.ftp`包: ```java import sun.net.ftp.*; public class FtpUpfile { private FtpClient ftpclient; private String ipAddress; private int ipPort...
import com.sun.net.ftp.FtpFile; public class SunFtpExample { public static void main(String[] args) throws Exception { SSLContext context = SSLContext.getInstance("SSL", new Provider()); context....
注意,由于`FtpClient`类源自`sun.net.ftp`包,它可能不是跨JVM版本兼容的,因此在某些Java环境中可能不可用。在实际开发中,开发者通常会选择使用Apache Commons Net库或其他的FTP客户端库,它们提供更稳定且跨平台...
在Java中,我们可以使用`sun.net.ftp.FtpClient`类来实现FTP(文件传输协议)客户端的功能,包括上传和下载文件。以下是一个简单的Java FTP客户端源码示例,展示了如何连接FTP服务器、执行FTP命令以及上传和下载文件...
在提供的代码示例中,可以看到使用了`sun.net.ftp.FtpClient`类来实现FTP客户端的功能。然而,值得注意的是,`sun.net.ftp.FtpClient`并不是标准的Java API,而是Oracle JRE的一个私有实现,这意味着它可能在不同的...
`sun.net.ftp.*`包包含了Java的FTP协议支持,如`FtpClient`对象,它是FTP连接的核心,负责与FTP服务器的通信,包括登录、上传、下载、列出目录等操作。`sun.net.TelnetInputStream`和`TelnetOutputStream`可能用于在...
在提供的代码中,使用了`sun.net.*`和`sun.net.ftp.*`这两个包,它们包含了Java对FTP协议的支持。不过需要注意的是,这些类属于Sun Microsystems的内部API,不推荐在生产环境中直接使用,因为它们可能在未来的Java...
3. **读取文件并写入响应流**:读取文件内容,并将其写入到HTTP响应流中,以便客户端可以下载。 ```java ServletOutputStream sos = response.getOutputStream(); FileInputStream fis = null; File file = new...
本代码示例展示了使用 `sun.net.ftp` 包来实现 FTP 客户端功能,包括连接、断开、切换目录、创建目录、删除文件、上传文件、下载文件以及获取文件列表等操作。需要注意的是,`sun.net.ftp` 包是 Sun Microsystems ...
Java开发FTP客户端涉及的核心知识点包括FTP协议的基本原理、FTP客户端的设计模式、以及JBuilder9中提供的FTP库——sun.net.ftp.FtpClient的使用。以下是对这些知识点的详细说明: 1. FTP协议基础: FTP(File ...
- 使用`sun.net.ftp.FtpClient`类创建一个FTP客户端对象,并通过调用`openServer()`方法连接到指定的服务器。 - 登录服务器,通过调用`login()`方法,传入用户名和密码。 - 如果提供了路径,则使用`cd()`方法切换到...
`java.awt`和`javax.swing`用于构建图形用户界面(GUI),而`sun.net.ftp`是Java的内置FTP支持,允许进行FTP连接和文件传输。 2. **定义类和组件** - `Frame1`:这是主类,继承自`JFrame`,表示一个窗口应用程序。...
- `sun.net.ftp.*`: 提供了与FTP相关的类。 - `sun.net.*`: 一般包含了一些网络相关的工具类。 - `java.awt.*`: Java AWT (Abstract Window Toolkit) 提供了图形用户界面组件。 - `java.awt.event.*`: 处理AWT事件的...
1. **使用Java实现FTP客户端**:Java提供了多种方式来实现FTP客户端,本例中使用的`sun.net.ftp.FtpClient`类可以方便地进行FTP操作。 2. **关键方法解析**: - **`openServer(ip, port)`**:打开连接至指定IP地址...
这段代码导入了实现FTP功能所需的库,其中`sun.net.ftp.*`提供了FTP客户端的基本操作类,而`java.awt.*`、`java.applet.*`等则为构建GUI界面提供了支持。 ##### 2. 创建Applet类 ```java public class FtpApplet ...