- 浏览: 38691 次
- 性别:
- 来自: 西安
最新评论
-
buyizhouji:
好!!感谢!
java复制文件夹 -
m635674608:
在winods上行,到unix上就不行了。
java判断一个文件是否正在被其他程序使用(调用)? -
xzhsh91:
怎么提示没有权限
JS 弹出文件保存窗口
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.SocketException; import java.text.SimpleDateFormat; import java.util.Properties; import org.apache.commons.logging.Log; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPReply; /** * 实现FTP 客户端的各种操作 * * 其实JDK里面也有支持FTP操作的包【jre/lib下的rt.jar】,但是SUN的DOC里面并没有提供相应文档, * 因为这里面的包,不被官方支持,建议不要使用。我们可以使用第三方提供的包apache.commons。 apache.commons的包,都有文档,方便使用 * 另外IBM也有提供一个ftp包,我没有用过,有兴趣的可以去研究一下 * * @commons-net:http://apache.mirror.phpchina.com/commons/net/binaries/commons-net-1.4.1.zip * @jakarta-oro:http://mirror.vmmatrix.net/apache/jakarta/oro/source/jakarta-oro-2.0.8.zip * @commons-io:http://apache.mirror.phpchina.com/commons/io/binaries/commons-io-1.3.2-bin.zip * * @author * @version 2008-06-10 Ftp.java * */ public class Ftp { private static Log logger; /** * FTP 登录用户名 */ private static String UserName; /** * FTP 登录密码 */ private static String Password; /** * FTP 服务器地址IP地址 */ private static String Ip; /** * FTP 端口 */ private static int Port; /** * 属性集 */ private static Properties Property = null; /** * 配置文件的路径名 */ private static String ConfigFile = "src/com/wwkj/cms/test/ftp/ftpconfig.properties"; /** * FTP 客户端代理 */ private static FTPClient FtpClient = null; /** * 时间格式化 */ private static SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd hh:mm"); /** * FTP */ private static final String[] FILE_TYPES = { "文件", "目录", "符号链接", "未知类型" }; /** * 传输模式为二进制文件. */ public static final int BINARY_FILE_TYPE = FTP.BINARY_FILE_TYPE; /** * 传输模式为ASCII,默认为ASCII */ public static final int ASCII_FILE_TYPE = FTP.ASCII_FILE_TYPE; public static int i=1; public static void main(String[] args) { // setConfigFile("ftpconfig.properties");// 设置配置文件路径 connectServer(); // makeDirectory("eeee"); // changeWorkingDirectory("webroot");//进入文件夹webroot // listRemoteFiles("*.jsp");//列出webroot目录下所有jsp文件 setFileType(FTP.BINARY_FILE_TYPE);// 设置传输二进制文件 //uploadFile("G:/临时文件/万维公司员工交通通讯报销标准(2008修订版).doc", // "中国人也/万维公司员工交通通讯报销标准(2008修订版).doc");// // 上传文件woxingwosu.xml,重新命名为myfile.xml // renameFile("viewDetail.jsp", // "newName.jsp");//将文件viewDetail.jsp改名为newName.jsp // uploadManyFile("G:/临时文件/staxmem", "dirdirdir/"); // deleteFile("/testtest/");//删除一个文件UpdateData.class // deleteEmptyDirectory("dfd");// // loadFile("jakarta-oro-2.0.8.jar", "E:/tmp/00000000000000001.jpg");// // 01.jpg,并且重新命名为G:/临时文件/00000000000000001.jpg // uploadFile("G:/临时文件"); // listRemoteFiles("eeee");// 列出所有文件和目录 // listRemoteFiles("58-20166.jpg");// 列出指定的文件和目录 closeConnect();// 关闭连接 } /** * 上传单个文件,并重命名 * * @param localFilePath--本地文件路径 * @param newFileName--新的文件名,可以命名为空"" * @return true 上传成功,false 上传失败 */ public static boolean uploadFile(String localFile, String newFileName) { boolean flag = true; try { connectServer(); FtpClient.setFileType(BINARY_FILE_TYPE); // ftp.setFileType(FTP.ASCII_FILE_TYPE); FtpClient.enterLocalPassiveMode(); // ftp.changeWorkingDirectory(remoteDir); FtpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); File file = new File(localFile); File newFile = new File(newFileName); String dir = newFile.getParentFile().getPath(); if (!FtpClient.changeWorkingDirectory(dir)) {// 如果不能进入dir下,说明此目录不存在! if (!makeDirectory(newFile.getParentFile().getPath())) { System.out.println("创建文件目录【"+dir+"】 失败!"); } } changeWorkingDirectory("/");// 回到FTP根目录 InputStream input = new FileInputStream(file); if (input == null) { System.out.println("本地文件不存在"); logger.debug("本地文件不存在,请重新选择!"); } if (newFileName.trim().equals("")) { newFileName = file.getName(); } flag = FtpClient.storeFile(newFileName, input); if (flag) { System.out.println("upload File succeed"); } else { System.out.println("upload File false"); } input.close(); } catch (IOException e) { e.printStackTrace(); logger.debug("本地文件上传失败!", e); // TODO: handle exception } catch (Exception e) { e.printStackTrace(); // logger.debug("本地文件上传失败!", e); // TODO: handle exception } return flag; } // /** // * 上传多个文件 // * // * @param localFilePath--本地文件夹路径 // * @return true 上传成功,false 上传失败 // */ // public static String uploadManyFile(String localFile) { // boolean flag = true; // StringBuffer strBuf = new StringBuffer(); // int n = 0; // try { // connectServer(); // File file = new File(localFile);// 在此目录中找文件 // // File file2[] = file.listFiles(); // // for (int i = 0; i < file2.length; i ) { // // File file1 = new File(file2[i].getAbsolutePath()); // if (file1.isDirectory()) {// 文件夹中还有文件夹 // uploadManyFile(file2[i].getAbsolutePath()); // } else { // flag = uploadFile(file2[i].getAbsolutePath(), ""); // } // if (!flag) { // n ; // strBuf.append(file2[i].getName() "\r\n"); // // } // } // if (n > 0) { // // strBuf.insert(0, "共有" n "上传失败,分别为\r\n"); // } // System.out.println(strBuf.toString()); // } catch (NullPointerException e) { // e.printStackTrace(); // // logger.debug("本地文件上传失败!找不到上传文件!", e); // // TODO: handle exception // } catch (Exception e) { // e.printStackTrace(); // logger.debug("本地文件上传失败!", e); // // TODO: handle exception // } // return strBuf.toString(); // } // // /** // * 上传多个文件 // * // * @param localFilePath--本地文件夹路径 // * @param newFileName--目标路径 // * @return true 上传成功,false 上传失败 // */ // public static String uploadManyFile(String localFile, String newFileName) { // boolean flag = true; // StringBuffer strBuf = new StringBuffer(); // int n = 0; // try { // connectServer(); // File file = new File(localFile);// 在此目录中找文件 // // File file2[] = file.listFiles(); // // for (int i = 0; i < file2.length; i ) { // // File file1 = new File(file2[i].getAbsolutePath()); // System.out.println(file1.isFile()); // if (file1.isDirectory()) {// 文件夹中还有文件夹 // // uploadManyFile(file2[i].getAbsolutePath(), newFileName); // } else { // String tmpNewFileName = ""; // if (newFileName.substring(newFileName.length() - 1).equals( // "/")) { // // tmpNewFileName = newFileName file2[i].getName(); // } else { // // tmpNewFileName = newFileName "/" file2[i].getName(); // } // System.out.println(tmpNewFileName); // flag = uploadFile(file2[i].getAbsolutePath(), // tmpNewFileName); // } // if (!flag) { // n ; // strBuf.append(file2[i].getName() "\r\n"); // // } // } // if (n > 0) { // // strBuf.insert(0, "共有" n "上传失败,分别为\r\n"); // } // System.out.println(strBuf.toString()); // } catch (NullPointerException e) { // e.printStackTrace(); // logger.debug("本地文件上传失败!找不到上传文件!", e); // // TODO: handle exception // } catch (Exception e) { // e.printStackTrace(); // logger.debug("本地文件上传失败!", e); // // TODO: handle exception // } // return strBuf.toString(); // } // // /** // * 下载文件 // * // * @param remoteFileName // * --服务器上的文件名 // * @param localFileName--本地文件名 // * @return true 下载成功,false 下载失败 // * // */ // public static boolean loadFile(String remoteFileName, String localFileName) { // boolean flag = true; // connectServer(); // // 下载文件 // BufferedOutputStream buffOut = null; // try { // buffOut = new BufferedOutputStream(new FileOutputStream( // localFileName)); // flag = FtpClient.retrieveFile(remoteFileName, buffOut); // } catch (Exception e) { // e.printStackTrace(); // logger.debug("本地文件下载失败!", e); // } finally { // try { // if (buffOut != null) // buffOut.close(); // } catch (Exception e) { // e.printStackTrace(); // // } // } // return flag; // } // // /** // * 删除一个文件 // */ // public static boolean deleteFile(String filename) { // boolean flag = true; // try { // connectServer(); // // flag = FtpClient.deleteFile(filename); // if (flag) { // System.out.println("delete File succeed"); // // } else { // System.out.println("delete File false"); // // } // } catch (IOException ioe) { // ioe.printStackTrace(); // } // return flag; // } // // /** // * 删除目录 // */ // public static void deleteDirectory(String pathname) { // try { // connectServer(); // File file = new File(pathname); // if (file.isDirectory()) { // File file2[] = file.listFiles(); // } else { // deleteFile(pathname); // // } // FtpClient.removeDirectory(pathname); // } catch (IOException ioe) { // ioe.printStackTrace(); // } // } // // /** // * 删除空目录 // */ // public static void deleteEmptyDirectory(String pathname) { // try { // connectServer(); // FtpClient.removeDirectory(pathname); // } catch (IOException ioe) { // ioe.printStackTrace(); // } // } // /** // * 列出服务器上文件和目录 // * // * @param regStr // * --匹配的正则表达式 // */ // @SuppressWarnings("unchecked") // public static void listRemoteFiles(String regStr) { // connectServer(); // try { // // FtpClient.changeWorkingDirectory(regStr); // String files[] = FtpClient.listNames(regStr); // if (files == null || files.length == 0) // System.out.println("There has not any file!"); // else { // for (int i = 0; i < files.length; i ) { // System.out.println(files[i]); // // } // // } // } catch (Exception e) { // e.printStackTrace(); // } // } // // /** // * 列出Ftp服务器上的所有文件和目录 // * // */ // public static void listRemoteAllFiles() { // connectServer(); // try { // String[] names = FtpClient.listNames(); // for (int i = 0; i < names.length; i ) { // System.out.println(names[i]); // } // // } catch (Exception e) { // e.printStackTrace(); // } // } /** * 关闭连接 */ public static void closeConnect() { try { if (FtpClient != null) { FtpClient.logout(); FtpClient.disconnect(); } } catch (Exception e) { e.printStackTrace(); } } /** * 设置配置文件 * * @param configFile */ public static void setConfigFile(String configFile) { Ftp.ConfigFile = configFile; } /** * 设置传输文件的类型[文本文件或者二进制文件] * * @param fileType--BINARY_FILE_TYPE、ASCII_FILE_TYPE */ public static void setFileType(int fileType) { try { connectServer(); FtpClient.setFileType(fileType); } catch (Exception e) { e.printStackTrace(); } } /** * 扩展使用 * * @return */ protected static FTPClient getFtpClient() { connectServer(); return FtpClient; } /** * 设置参数 * * @param configFile * --参数的配置文件 */ private static void setArg(String configFile) { Property = new Properties(); BufferedInputStream inBuff = null; try { File file = new File(configFile); inBuff = new BufferedInputStream(new FileInputStream(file)); Property.load(inBuff); UserName = Property.getProperty("username"); Password = Property.getProperty("password"); Ip = Property.getProperty("ip"); Port = Integer.parseInt(Property.getProperty("port")); } catch (FileNotFoundException e1) { System.out.println("配置文件 【" +configFile +"】不存在!"); e1.printStackTrace(); } catch (IOException e) { System.out.println("配置文件 【" +configFile+ "】无法读取!"); e.printStackTrace(); } /* * } catch (Exception e) { e.printStackTrace(); } finally { try { if * (inBuff != null) inBuff.close(); } catch (Exception e) { * e.printStackTrace(); } } */ } /** * 连接到服务器 * * @return true 连接服务器成功,false 连接服务器失败 */ public static boolean connectServer() { boolean flag = true; if (FtpClient == null) { int reply; try { setArg(ConfigFile); FtpClient = new FTPClient(); FtpClient.setControlEncoding("GBK"); FtpClient.setDefaultPort(Port); FtpClient.configure(getFtpConfig()); FtpClient.connect(Ip); FtpClient.login(UserName, Password); FtpClient.setDefaultPort(Port); //System.out.print(FtpClient.getReplyString()); reply = FtpClient.getReplyCode(); FtpClient.setDataTimeout(120000); if (!FTPReply.isPositiveCompletion(reply)) { FtpClient.disconnect(); System.err.println("FTP server refused connection."); // logger.debug("FTP 服务拒绝连接!"); flag = false; } // System.out.println(i); // i ; } catch (SocketException e) { flag = false; e.printStackTrace(); System.err.println("登录ftp服务器【" +Ip+ "】失败,连接超时!"); // logger.debug("登录ftp服务器【" Ip "】失败"); } catch (IOException e) { flag = false; e.printStackTrace(); System.err.println("登录ftp服务器【"+ Ip +"】失败,FTP服务器无法打开!"); // logger.debug("登录ftp服务器【" Ip "】失败"); } } return flag; } /** * 进入到服务器的某个目录下 * * @param directory */ public static void changeWorkingDirectory(String directory) { try { connectServer(); FtpClient.changeWorkingDirectory(directory); } catch (IOException ioe) { ioe.printStackTrace(); } } // /** // * 返回到上一层目录 // */ // public static void changeToParentDirectory() { // try { // connectServer(); // FtpClient.changeToParentDirectory(); // } catch (IOException ioe) { // ioe.printStackTrace(); // } // } /** * 重命名文件 * * @param oldFileName * --原文件名 * @param newFileName * --新文件名 */ public static void renameFile(String oldFileName, String newFileName) { try { connectServer(); FtpClient.rename(oldFileName, newFileName); } catch (IOException ioe) { ioe.printStackTrace(); } } /** * 设置FTP客服端的配置--一般可以不设置 * * @return */ private static FTPClientConfig getFtpConfig() { FTPClientConfig ftpConfig = new FTPClientConfig( FTPClientConfig.SYST_UNIX); ftpConfig.setServerLanguageCode(FTP.DEFAULT_CONTROL_ENCODING); return ftpConfig; } /** * 转码[ISO-8859-1 -> GBK] 不同的平台需要不同的转码 * * @param obj * @return */ private static String iso8859togbk(Object obj) { try { if (obj == null) return ""; else return new String(obj.toString().getBytes("iso-8859-1"), "GBK"); } catch (Exception e) { return ""; } } /** * 在服务器上创建一个文件夹 * * @param dir * 文件夹名称,不能含有特殊字符,如 \ 、/ 、: 、* 、?、 "、 <、>... */ public static boolean makeDirectory(String dir) { connectServer(); boolean flag = true; try { // System.out.println("dir=======" dir); flag = FtpClient.makeDirectory(dir); if (flag) { System.out.println("make Directory " +dir +" succeed"); } else { System.out.println("make Directory " +dir+ " false"); } } catch (Exception e) { e.printStackTrace(); } return flag; } public static Log getLogger() { return logger; } public static void setLogger(Log logger) { Ftp.logger = logger; } }
相关推荐
FtpList部分是用来显示FTP服务器上的文件;...以下是这三部分的JAVA源程序: (1)显示FTP服务器上的文件 void ftpList_actionPerformed(ActionEvent e) { String server=serverEdit.getText(); //输入的FTP服务器的IP地址
在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...
Java解析FTP服务器文本文件 Java解析FTP服务器文本文件是指使用Java语言连接FTP服务器,上传、下载、递归目录遍历等基本操作的集合。在这个过程中,我们需要引入相关的jar包,例如cpdetector.jar、jchardet-1.0.jar...
在Java web项目中,需要预览远程FTP服务器上的PDF文件。这可以通过使用pdf.js插件和自定义servlet来实现。 ### 2. pdf.js插件的使用 pdf.js插件是一个功能强大且轻量级的PDF查看器,可以在Web浏览器中预览PDF文件...
2. **目录管理**:FTP提供了对远程目录的查看(ls)、切换(cd)等功能。 3. **文件操作**:FTP支持文件的打开、关闭、上传(put)、下载(get)等操作。 #### 构建Java FTP服务器的核心步骤 构建Java FTP服务器...
Java FTP客户端源代码是用于通过Java编程语言与FTP(文件传输协议)服务器进行交互的程序。FTP是一种在互联网上常用的标准文件传输协议,允许用户上传、下载和管理远程服务器上的文件。Java提供了一系列的API,如`...
在Java编程语言中,FTP(File Transfer Protocol)文件上传和下载是常见的网络操作,用于在本地计算机和远程服务器之间交换文件。以下将详细介绍如何使用Java实现FTP文件上传和下载的步骤,以及涉及到的关键知识点。...
FTP客户端允许用户从远程服务器上传或下载文件。在Java中,可以使用`java.net.Socket`类和`java.io`包中的类来建立连接并进行数据传输。但是,为了简化开发过程,通常会使用专门的FTP库,如Apache Commons Net。这个...
Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...
标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...
java远程FTP浏览文件及操作文件删除,上传下载
在Java中,我们可以利用Apache Commons Net库来实现FTP客户端的功能,从而上传、下载、列出远程目录、删除文件等操作。 Java FTP的主要知识点包括: 1. **Apache Commons Net库**:这是Java中广泛使用的FTP客户端...
让我们设想这样一个情形--我们想写一个纯 Java 的从一个远程计算机上运行的 FTP 服务器上传下载文件的应用程序;我们还希望能够得到那些供下载的远程文件的基本文件信息,如文件名、数据或者文件大小等。尽管从头...
本文将详细讨论如何使用Java连接FTP(File Transfer Protocol)服务器,进行文件的上传、下载、删除以及复制等操作。 首先,Java通过`java.net`和`javax.net`包提供了FTP客户端的功能。主要依赖于`java.net....
本资源包"java远程进行telnet,ftp,ssh连接的方法及源代码.rar"就是针对这些功能的一个详细教程,包含说明文档和源代码示例。 首先,让我们来深入了解一下telnet。Telnet是一种协议,允许用户通过网络远程登录到另一...
在Java中实现FTP上传,首先需要创建FTPClient对象,然后连接到FTP服务器,登录后设置工作目录。将要上传的文件转换为二进制流,并调用`storeFile()`方法。注意处理异常和确保文件传输完成后关闭流。 四、FTP下载 ...
Java访问FTPSever是一个常见的任务,特别是在开发需要与远程服务器交换文件的应用程序时。这篇博客可能探讨了如何使用Java的标准库或第三方库来实现这一功能。`commons-net-1.4.1.jar`和`jakarta-oro-2.0.8.jar`是两...
本文件是将 Java 中 通过远程url访问 转换成 HTML 文件 ,通过 dom4j转换成Java对象元素
Java定时从FTP服务器更新相关文件是一项常见的任务,特别是在自动化数据同步和备份的场景中。这里主要涉及的技术点包括FTP协议、Java编程以及文件系统操作。本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的...