`

转 java通过ftp上传、下载文件,遍历文件目录

 
阅读更多
001 import java.io.DataInputStream;
002 import java.io.File;
003 import java.io.FileInputStream;
004 import java.io.FileOutputStream;
005 import java.io.IOException;
006 import java.util.ArrayList;
007 import java.util.List;
008  
009 import org.apache.catalina.tribes.util.Logs;
010  
011 import sun.net.TelnetInputStream;
012 import sun.net.TelnetOutputStream;
013 import sun.net.ftp.FtpClient;
014  
015 public class DownFileForFtp {
016     FtpClient ftpClient;
017     private String server = "ip";
018     private int port = 21;
019     private String userName = "usn";
020     private String userPassword = "pwd";
021  
022     /**
023      * 链接到服务器
024      *
025      * @return
026      */
027     public boolean open() {
028         if (ftpClient != null && ftpClient.serverIsOpen())
029             return true;
030         try {
031             ftpClient = new FtpClient();
032             ftpClient.openServer(server, port);
033             ftpClient.login(userName, userPassword);
034             ftpClient.binary();
035             return true;
036         catch (Exception e) {
037             e.printStackTrace();
038             ftpClient = null;
039             return false;
040         }
041     }
042  
043     public boolean cd(String dir) {
044         boolean f = false;
045         try {
046             ftpClient.cd(dir);
047         catch (IOException e) {
048             //Logs.error(e.toString());
049             return f;
050         }
051         return true;
052     }
053  
054     /**
055      * 上传文件到FTP服务器
056      *
057      * @param localPathAndFileName
058      *            本地文件目录和文件名
059      * @param ftpFileName
060      *            上传后的文件名
061      * @param ftpDirectory
062      *            FTP目录如:/path1/pathb2/,如果目录不存在回自动创建目录
063      * @throws Exception
064      */
065     public boolean upload(String localDirectoryAndFileName, String ftpFileName,
066             String ftpDirectory) throws Exception {
067         if (!open())
068             return false;
069         FileInputStream is = null;
070         TelnetOutputStream os = null;
071         try {
072             char ch = ' ';
073             if (ftpDirectory.length() > 0)
074                 ch = ftpDirectory.charAt(ftpDirectory.length() - 1);
075             for (; ch == '/' || ch == '\\'; ch = ftpDirectory
076                     .charAt(ftpDirectory.length() - 1))
077                 ftpDirectory = ftpDirectory.substring(0,
078                         ftpDirectory.length() - 1);
079  
080             int slashIndex = ftpDirectory.indexOf(47);
081             int backslashIndex = ftpDirectory.indexOf(92);
082             int index = slashIndex;
083             String dirall = ftpDirectory;
084             if (backslashIndex != -1 && (index == -1 || index > backslashIndex))
085                 index = backslashIndex;
086             String directory = "";
087             while (index != -1) {
088                 if (index > 0) {
089                     String dir = dirall.substring(0, index);
090                     directory = directory + "/" + dir;
091                     ftpClient.sendServer("XMKD " + directory + "\r\n");
092                     ftpClient.readServerResponse();
093                 }
094                 dirall = dirall.substring(index + 1);
095                 slashIndex = dirall.indexOf(47);
096                 backslashIndex = dirall.indexOf(92);
097                 index = slashIndex;
098                 if (backslashIndex != -1
099                         && (index == -1 || index > backslashIndex))
100                     index = backslashIndex;
101             }
102             ftpClient.sendServer("XMKD " + ftpDirectory + "\r\n");
103             ftpClient.readServerResponse();
104  
105             os = ftpClient.put(ftpDirectory + "/" + ftpFileName);
106             File file_in = new File(localDirectoryAndFileName);
107             is = new FileInputStream(file_in);
108             byte bytes[] = new byte[1024];
109             int i;
110             while ((i = is.read(bytes)) != -1)
111                 os.write(bytes, 0, i);
112             // 清理垃圾
113  
114             return true;
115         catch (Exception e) {
116             e.printStackTrace();
117             return false;
118         finally {
119             if (is != null)
120                 is.close();
121             if (os != null)
122                 os.close();
123         }
124     }
125  
126     /**
127      * 从FTP服务器上下载文件并返回下载文件长度
128      *
129      * @param ftpDirectoryAndFileName
130      * @param localDirectoryAndFileName
131      * @return
132      * @throws Exception
133      */
134     public long download(String ftpDirectoryAndFileName,
135             String localDirectoryAndFileName) throws Exception {
136         long result = 0;
137         if (!open())
138             return result;
139         TelnetInputStream is = null;
140         FileOutputStream os = null;
141         try {
142             is = ftpClient.get(ftpDirectoryAndFileName);
143             java.io.File outfile = new java.io.File(localDirectoryAndFileName);
144             os = new FileOutputStream(outfile);
145             byte[] bytes = new byte[1024];
146             int c;
147             while ((c = is.read(bytes)) != -1) {
148                 os.write(bytes, 0, c);
149                 result = result + c;
150             }
151         catch (Exception e) {
152             throw e;
153         finally {
154             if (is != null)
155                 is.close();
156             if (os != null)
157                 os.close();
158  
159         }
160         return result;
161     }
162  
163     /**
164      * 返回FTP目录下的文件列表
165      *
166      * @param ftpDirectory
167      * @return
168      */
169     public List<String> getFileNameList(String ftpDirectory) {
170         List<String> list = new ArrayList<String>();
171         if (!open())
172             return list;
173         try {
174             DataInputStream dis = new DataInputStream(
175                     ftpClient.nameList(ftpDirectory));
176             String filename = "";
177             while ((filename = dis.readLine()) != null) {
178                 list.add(filename);
179                 System.out.println(filename);
180             }
181         catch (Exception e) {
182             e.printStackTrace();
183         }
184         return list;
185     }
186  
187     /**
188      * 删除FTP上的文件
189      *
190      * @param ftpDirAndFileName
191      */
192     public boolean deleteFile(String ftpDirAndFileName) {
193         if (!open())
194             return false;
195         ftpClient.sendServer("DELE " + ftpDirAndFileName + "\r\n");
196         return true;
197     }
198  
199     /**
200      * 删除FTP目录
201      *
202      * @param ftpDirectory
203      */
204     public boolean deleteDirectory(String ftpDirectory) {
205         if (!open())
206             return false;
207         ftpClient.sendServer("XRMD " + ftpDirectory + "\r\n");
208         return true;
209     }
210  
211     /**
212      * 关闭链接
213      */
214     public void close() {
215         try {
216             if (ftpClient != null && ftpClient.serverIsOpen())
217                 ftpClient.closeServer();
218         catch (Exception e) {
219  
220         }
221     }
222      
223     public static void main(String []args) throws Exception{
224         DownFileForFtp df = new DownFileForFtp();
225         df.getFileNameList("E:\\uploadfiles\\cat");
226         df.download("E:\\uploadfiles\\cat\\2012-03-29.11.00.00.012.xml""F:\\temp\\ftpdown\\2012-03-29.11.00.00.012.xml");
227  
228     }
229      
230 }
分享到:
评论

相关推荐

    java实现Ftp批量下载文件及解压

    通过Java实现FTP批量下载文件以及解压的功能,可以极大地提高工作效率,特别是在处理大量数据时。以下是一份详细的步骤介绍: 首先,我们需要引入Java的FTP客户端库,如Apache Commons Net库。这个库提供了丰富的...

    Java解析FTP服务器文本文件

    Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar、antlr.jar、commons-...

    JAVA获取FTP文件列表

    本文档将详细介绍一个基于Java的实用工具类`FtpClientUtil`,该类提供了一系列功能来与FTP服务器交互,包括连接到服务器、上传文件、下载文件、获取文件列表、删除文件和目录以及关闭连接等操作。 #### 二、`...

    java 连接 FTP 文件操作(上传,下载,删除,复制

    **文件下载** 下载文件则是通过`retrieveFile`方法,同样需要提供远程文件路径和一个本地文件流来接收数据。 ```java OutputStream fos = new FileOutputStream("localSavePath"); ftpClient.retrieveFile(...

    java ftp上传 下载 文件压缩解压

    首先,FTP上传和下载是Java中常见的任务,通常通过`java.net.Socket`或`java.net.URL`类来实现,但更常见的是使用`org.apache.commons.net.ftp`库,这个库提供了FTPClient类,简化了FTP操作。例如,你可以创建一个...

    java 从ftp服务器下载文件

    * Description: FTP文件下载功能 * @Version 1.0 Jul 27, 2008 5:32:36 PM by cuihongbao@d-heaven.com * @param url FTP服务器地址 * @param port FTP服务器端口号 * @param username FTP用户名 * @param ...

    java实现ftp自动上传文件

    Java 实现 FTP 自动上传文件是一项常见的任务,尤其在自动化部署、数据同步...总的来说,通过Java实现FTP自动上传文件涉及到网络通信、文件操作、日志处理等多个方面,理解这些概念对于Java开发者来说是非常重要的。

    用Java实现FTP批量大文件上传下载

    ### 用Java实现FTP批量大文件上传下载的关键技术与实现 #### 一、引言 在当前互联网技术的发展中,文件传输是不可或缺的一部分。尤其是在工程建设项目中,常常需要跨地域的大规模文件交换。传统的HTTP传输方式虽然...

    java实现本地按照FTP服务器上目录结构创建文件夹下载文件

    在Java编程环境中,实现从FTP(File Transfer Protocol)服务器上按照其目录结构创建本地文件夹并下载文件是一项常见的任务。FTP是一种用于在网络上传输文件的标准协议,它允许用户从远程服务器上获取或发送文件。本...

    JAVA实现ftp上传,下载

    总结,Java实现FTP上传和下载需要借助Apache Commons Net库,通过FTPClient类进行操作。同时,如果涉及XML文件,还需要理解并应用DOM、SAX或StAX解析技术。在实现过程中,要注意文件流的管理和异常处理,确保操作的...

    JAVA处理FTP上的文件

    在FTP中,这可以通过`storeFile()`方法实现,将本地文件上传到FTP服务器的一个新位置。 5. **读写CSV文件**: Java标准库中的`BufferedReader`和`BufferedWriter`可以用于读写CSV文件。读取时,逐行读取文件,按...

    用Java实现FTP批量大文件上传下载.zip

    通过以上步骤,我们可以利用Java的FTPClient类实现FTP批量大文件的上传和下载。对于数据量大的情况,这种自动化和批量化的处理方式大大提高了工作效率和系统稳定性。记住,实际开发中还需要根据具体需求进行调整和...

    java定时从ftp服务器更新相关文件

    例如,你可以通过`connect()`方法建立连接,`login()`方法进行登录,`changeWorkingDirectory()`方法切换目录,`listFiles()`获取目录下的文件列表,`retrieveFile()`下载文件。 5. 文件最后修改时间判断: 在Java...

    java项目实现远程UbuntuFTP下载文件和文件夹

    4. **下载文件夹**:由于FTP协议不直接支持下载整个目录,我们需要遍历目录下的所有文件和子目录,递归地下载每个文件。这需要自己实现一个递归函数。 5. **验证SHA256校验和**:下载完成后,为了确认文件完整性,...

    java+ftp方式上传下载文件

    根据给定的信息,本文将详细解释如何使用Java与Apache Commons Net和IO库通过FTP协议上传和下载文件。这里会深入探讨代码实现、配置以及常见问题处理等知识点。 ### Java FTP 文件上传与下载 #### 一、环境搭建与...

    ftp上传下载java代码

    1. 递归上传/下载目录:可以遍历本地目录,逐个上传或下载文件。 2. 断点续传:如果文件较大,可以记录已传输的部分,在下次连接时继续上传或下载。 3. 多线程上传/下载:通过多线程同时处理多个文件,提高传输效率...

Global site tag (gtag.js) - Google Analytics