- 浏览: 305366 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liuyong19832011:
,赞一个
Java通过BufferedWriter追加内容到文件末尾的几种常用方法 -
justjavac:
总结很好,怎么没人支持呢?最近发现iteye踩贴现象很严重。
shell数组的使用
转至: http://www.2cto.com/kf/201206/135869.html
package downloadMap; import java.io.BufferedInputStream; import java.io.IOException; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Enumeration; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; import javax.swing.JOptionPane; import javax.swing.ProgressMonitorInputStream; import TIp.Jframet; import doFile.ZipToFile; import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; public class FtpZipOption { /** * * 从ftp服务器下载zip文件 * * @param * *@throws Exception **/ public static void downLoadZipFile(String wantFileName ) throws Exception { /*new Thread(){ public void run(){ Jframet jf = new Jframet("正在链接ftp,qing'shao'h", "确定"); jf.jb.setVisible(false); } }.start();*/ String[] localFileNameArray = getLocalFileNameArray("c:\\BaseMap");// 得到所有已经下载的tb文件名 File downFile=new File("c:\\BaseMap"); if(!downFile.exists()) downFile.mkdir(); if (ifToDownLoadFile(wantFileName, localFileNameArray)) {// 判断是否需要下载 String str; // 输出信息字符串 /** * * 和服务器建立连接 */ FtpClient ftp = new FtpClient("172.18.2.66"); // 根据服务器ip建立连接 //JOptionPane.showMessageDialog(null, ""); str = ftp.getResponseString(); // 获得响应信息 System.out.println("连接服务器:" + str); /** * * 登陆到Ftp服务器 */ ftp.login("admin", "1"); // 根据用户名和密码登录服务器 str = ftp.getResponseString(); System.out.println("登录:" + str); /** * * 打开并定位到服务器目录 */ ftp.cd("mapdata2"); // 打开服务器上的文件目录 str = ftp.getResponseString(); System.out.println("打开服务器目录:" + str); ftp.binary();// 转化为二进制的文件 TelnetInputStream ftpIn = ftp.get(wantFileName + ".zip");// 找到要读取的文件 /*Jframet jf=new Jframet("正在下载地图,请稍候...","确定"); jf.jb.setVisible(false);*/ long fileLength=FtpZipOption.getFileSize("wantFileName.zip"); System.out.println(fileLength); byte[] buf = new byte[204800]; int bufsize = 0; File f=new File("c:\\BaseMap"); if(!f.exists()) f.mkdirs(); String toLocalPath = "c:\\BaseMap\\" + wantFileName + ".zip"; /*File f=new File(toLocalPath); f.mkdirs();*/ FileOutputStream ftpOut = new FileOutputStream(toLocalPath); int readLine=0; while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) { //System.out.println(bufsize); ftpOut.write(buf, 0, bufsize); readLine=+bufsize; } System.out.println(readLine); ftpOut.close(); ftpIn.close(); ZipToFile ziptofile=new ZipToFile(); String PostFilePath = "c:\\BaseMap"; ziptofile.zipToFile(toLocalPath, PostFilePath); // JOptionPane.showMessageDialog(null, "下载" + wantFileName + ".zip完成!"); System.out.println("下载" + wantFileName + ".zip完成!"); /* jf.jl.setText("下载地图成功"); jf.jb.setVisible(true);*/ } else { } } public static long getFileSize(String filename) throws IOException { String str; // 输出信息字符串 /** * * 和服务器建立连接 */ FtpClient ftp = new FtpClient("172.18.2.66"); // 根据服务器ip建立连接 str = ftp.getResponseString(); // 获得响应信息 System.out.println("连接服务器:" + str); /** * * 登陆到Ftp服务器 */ ftp.login("admin", "1"); // 根据用户名和密码登录服务器 str = ftp.getResponseString(); System.out.println("登录:" + str); /** * * 打开并定位到服务器目录 */ ftp.cd("mapdata2"); // 打开服务器上的文件目录 str = ftp.getResponseString(); System.out.println("打开服务器目录:" + str); ftp.binary();// 转化为二进制的文件 long fileSize = -1; String s = "SIZE " + filename + "\r\n"; ftp.sendServer(s); try { int status = ftp.readServerResponse(); if (status == 213) { String msg = ftp.getResponseString(); fileSize = Long.parseLong(msg.substring(3).trim()); } } catch (IOException e) { e.printStackTrace(); } return fileSize; } // 上传文件;并返回上传文件的信息 /*private static String upLoadZipToServer(String filename) throws Exception { String str; // 输出信息字符串 String timeStr = getNowTime();// 获得当前时间 String recordStr = "上传时间:" + timeStr + "\r\n";// 信息记录字符串 *//** * * 和服务器建立连接 *//* FtpClient ftp = new FtpClient("192.168.39.189"); // 根据服务器ip建立连接 str = ftp.getResponseString(); // 获得响应信息 System.out.println(str); recordStr += "连接服务器:" + str + "\r\n"; *//** * * 登陆到Ftp服务器 *//* ftp.login("test", "test"); // 根据用户名和密码登录服务器 str = ftp.getResponseString(); System.out.println(str); recordStr += "登录:" + str + "\r\n"; *//** * * 打开并定位到test目录 *//* ftp.cd("uptest"); // 打开服务器上的test文件夹 ftp.binary();// 转化为二进制的文件 str = ftp.getResponseString(); System.out.println(str); FileInputStream is = null; TelnetOutputStream os = null; try { // "upftpfile"用ftp上传后的新文件名 os = ftp.put("uptest.zip"); File file_in = new java.io.File(filename); if (file_in.length() == 0) { return "上传文件为空!"; } 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 "上传文件成功!"; }*/ /** * * zip压缩功能,压缩sourceFile(文件夹目录)下所有文件,包括子目录 * * @param sourceFile * ,待压缩目录; toFolerName,压缩完毕生成的目录 * * @throws Exception */ /*public static void fileToZip(String sourceFile, String toFolerName) throws Exception { List fileList = getSubFiles(new File(sourceFile)); // 得到待压缩的文件夹的所有内容 ZipOutputStream zos = new ZipOutputStream(new FileOutputStream( toFolerName)); ZipEntry ze = null; byte[] buf = new byte[1024]; int readLen = 0; for (int i = 0; i < fileList.size(); i++) { // 遍历要压缩的所有子文件 File file = (File) fileList.get(i); System.out.println("压缩到的文件名:" + file.getName()); ze = new ZipEntry(getAbsFileName(sourceFile, file)); ze.setSize(file.length()); ze.setTime(file.lastModified()); zos.putNextEntry(ze); InputStream is = new BufferedInputStream(new FileInputStream(file)); while ((readLen = is.read(buf, 0, 1024)) != -1) { zos.write(buf, 0, readLen); } is.close(); } zos.close(); System.out.println("压缩完成!"); } *//** * * 解压zip文件 * * @param sourceFile * ,待解压的zip文件; toFolder,解压后的存放路径 * * @throws Exception **//* public static void zipToFile(String sourceFile, String toFolder) throws Exception { String toDisk = toFolder;// 接收解压后的存放路径 ZipFile zfile = new ZipFile(sourceFile);// 连接待解压文件 System.out.println("要解压的文件是:" + zfile.getName()); Enumeration zList = zfile.entries();// 得到zip包里的所有元素 ZipEntry ze = null; byte[] buf = new byte[1024]; while (zList.hasMoreElements()) { ze = (ZipEntry) zList.nextElement(); if (ze.isDirectory()) { System.out.println("打开zip文件里的文件夹:" + ze.getName() + " skipped..."); continue; } System.out.println("zip包里的文件: " + ze.getName() + "\t" + "大小为:" + ze.getSize() + "KB"); // 以ZipEntry为参数得到一个InputStream,并写到OutputStream中 OutputStream outputStream = new BufferedOutputStream( new FileOutputStream(getRealFileName(toDisk, ze.getName()))); InputStream inputStream = new BufferedInputStream(zfile .getInputStream(ze)); int readLen = 0; while ((readLen = inputStream.read(buf, 0, 1024)) != -1) { outputStream.write(buf, 0, readLen); } inputStream.close(); outputStream.close(); System.out.println("已经解压出:" + ze.getName()); } zfile.close(); } *//** * * 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径. * * @param baseDir * java.lang.String 根目录 * * @param realFileName * java.io.File 实际的文件名 * * @return 相对文件名 *//* private static String getAbsFileName(String baseDir, File realFileName) { File real = realFileName; File base = new File(baseDir); String ret = real.getName(); while (true) { real = real.getParentFile(); if (real == null) break; if (real.equals(base)) break; else ret = real.getName() + "/" + ret; } return ret; } *//** * * 取得指定目录下的所有文件列表,包括子目录. * * @param baseDir * File 指定的目录 * * @return 包含java.io.File的List *//* private static List<File> getSubFiles(File baseDir) { List<File> ret = new ArrayList<File>(); File[] tmp = baseDir.listFiles(); for (int i = 0; i < tmp.length; i++) { if (tmp.isFile()) ret.add(tmp); if (tmp.isDirectory()) ret.addAll(getSubFiles(tmp)); } return ret; } *//** * * 给定根目录,返回一个相对路径所对应的实际文件名. * * @param zippath * 指定根目录 * * @param absFileName * 相对路径名,来自于ZipEntry中的name * * @return java.io.File 实际的文件 *//* private static File getRealFileName(String zippath, String absFileName) { String[] dirs = absFileName.split("/", absFileName.length()); File ret = new File(zippath);// 创建文件对象 if (dirs.length > 1) { for (int i = 0; i < dirs.length - 1; i++) { ret = new File(ret, dirs); } } if (!ret.exists()) {// 检测文件是否存在 ret.mkdirs();// 创建此抽象路径名指定的目录 } ret = new File(ret, dirs[dirs.length - 1]);// 根据ret 抽象路径名和child // 路径名字符串创建一个新File 实例 return ret; } */ /** * * 取得ftp服务器上某个目录下的所有文件名 * * @param ftp * , FtpClient类实例; folderName,服务器的文件夹名 * * @throws Exception * * @return list 某目录下文件名列表 **/ private static List getServerFileNameList(FtpClient ftp, String folderName) throws Exception { BufferedReader dr = new BufferedReader(new InputStreamReader(ftp .nameList(folderName))); List<String> list = new ArrayList<String>(); String s; while ((s = dr.readLine()) != null) { list.add(s); } return list; } /** * * 得到已经下载的目录下的所有文件名的数组 * * @param localPath * 本地的下载文件保存路径 * * @return 该路径下所有tb文件名 * * **/ private static String[] getLocalFileNameArray(String localPath) { File diskFile = new File(localPath); if (diskFile != null) { String[] fileNameList = diskFile.list(); return fileNameList; } else { return null; } } /** * *获得当前系统时间 www.2cto.com */ /*public static String getNowTime() { String timeStr; DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Date currentTime = new Date(System.currentTimeMillis()); timeStr = format.format(currentTime); return timeStr; } public static String getWantFileName() throws Exception { *//** 得到当前的系统精确时间**//* Date currentTime = new Date(System.currentTimeMillis()); *//** 接下来得到系统当前的年月日**//* DateFormat df1 = new SimpleDateFormat("yyyyMMdd"); Date todayDate = new Date(System.currentTimeMillis()); String todayStr = df1.format(todayDate);// 得到当前的年月日 *//** 接下来得到四个比较时间的String类型;分别在00点,06点,12点和18点**//* String compareTimeStr1 = todayStr + "00"; String compareTimeStr2 = todayStr + "06"; String compareTimeStr3 = todayStr + "12"; String compareTimeStr4 = todayStr + "18"; *//** 接下来得到四个比较时间的date类型**//* DateFormat df2 = new SimpleDateFormat("yyyyMMddHH"); Date compareTime1 = df2.parse(compareTimeStr1); Date compareTime2 = df2.parse(compareTimeStr2); Date compareTime3 = df2.parse(compareTimeStr3); Date compareTime4 = df2.parse(compareTimeStr4); *//** 接下来由当前系统时间和四个参照时间进行比较,找出该下载的文件名**//* if (currentTime.after(compareTime1) && currentTime.before(compareTime2)) { // 此时应该下载00点的文件,文件名为:compareTimeStr1 System.out.println("此时要下载的文件名为:" + compareTimeStr1 + ".zip"); return compareTimeStr1; } else if (currentTime.after(compareTime2) && currentTime.before(compareTime3)) { // 此时应该下载06点的文件,文件名为:compareTimeStr2 System.out.println("此时要下载的文件名为:" + compareTimeStr2 + ".zip"); return compareTimeStr2; } else if (currentTime.after(compareTime3) && currentTime.before(compareTime4)) { // 此时应该下载12点的文件,文件名为:compareTimeStr3 System.out.println("此时要下载的文件名为:" + compareTimeStr3 + ".zip"); return compareTimeStr3; } else if (currentTime.after(compareTime4)) { // 此时应该下载18点的文件,文件名为:compareTimeStr4 System.out.println("此时要下载的文件名为:" + compareTimeStr4 + ".zip"); return compareTimeStr4; } else { // nothing to do return null; } } */ /** * * 判断此时是否需要下载文件 * * @param wantFileName * ,此时该下载的文件名; localFileNameArray ,本地已经有的文件名 * * @return ture--需要下载; false--本地已经有了,不需要下载 * * **/ public static boolean ifToDownLoadFile(String wantFileName, String[] localFileNameArray) { if (wantFileName == null && localFileNameArray == null) {// 当想要下载的文件名获得失败 return false; } else if (wantFileName == null && localFileNameArray != null) {// 当想要下载的文件名获得失败 return false; } else if (wantFileName != null && localFileNameArray == null) {// 当本地没有已下载的文件 return true; } else if (wantFileName != null && localFileNameArray != null) {// 当要下载的文件在本地还没有 if (localFileNameArray.length > 0) { for (int i = 0; i < localFileNameArray.length; i++) { if (localFileNameArray.equals(wantFileName + ".zip")) { return false; } } return true; } else { return true; } } else { return false; } } public static void main(String args[]) { try { long aa=FtpZipOption.getFileSize("2.zip"); System.out.println(aa); FtpZipOption.downLoadZipFile("2"); } catch (Exception e) { e.printStackTrace(); } } }
发表评论
-
[转] System.out.println()和System.out.write()的区别
2013-12-27 16:14 901转至:http://blog.chinaunix.net/ui ... -
[转]Java读取解析sql文件,并使用netiler dao执行sql
2013-12-26 15:25 7991转至: 最近在做系统数据初始化,采用sql形式导入基础数据,这 ... -
[转]Java 单例模式详解
2013-08-20 11:15 796转至:http://www.cnblogs.com/whgw/ ... -
[转]Java synchronized详解
2013-08-07 19:12 856转至:http://www.cnblogs.com/devin ... -
[转]Java Socket Programming-Transferring large sized files through socket
2013-08-06 18:26 2872转至:http://www.coderpanda.com/ja ... -
【转】java大数据处理(千万级别FTP下载)
2013-08-06 00:20 1533转至:http://www.th7.cn/Program/ja ... -
Jakarta-Common-IO使用笔记
2013-08-05 14:11 1024转至: http://tech.ddvip.com/2008- ... -
[转]StringUtils详细介绍
2013-07-24 17:31 1300原文地址:http://www.blogj ... -
[转]BeanUtils.copyProperties()的用法
2013-07-24 15:16 2693原文地址: http://blog.csdn.net/itmy ... -
[转]Java内存泄漏
2013-04-10 13:45 875http://www.cnblogs.com/dotnetdo ... -
【转】java实现导出Excel文件和XML文件
2013-03-07 23:00 1404http://www.2cto.com/kf/201208/1 ... -
Java中split的注意事项
2013-01-22 00:08 1058stringObj.split([separator,[lim ... -
Struts2.2.1注解方式使用json整合jquery getJson方法
2013-01-10 22:53 01.引入与json相关的jar文件: json-lib ... -
ssh2常用annotation
2012-01-30 21:54 1005Spring annotation: @Servic ... -
Java日期类型与String的转换
2011-11-04 14:30 91531.String转Date SimpleDateFormat ... -
Java调用批处理或可执行文件[转载]
2011-07-22 17:17 756http://www.blogjava.net/supercr ... -
Java通过BufferedWriter追加内容到文件末尾的几种常用方法
2011-07-18 16:15 33837import java.io.BufferedWriter; ... -
JAVA map的遍历
2011-07-05 09:07 1021第一种entrySet,效率较高,推荐用这种: Map ... -
java.lang.OutOfMemoryError: Java heap space 的解决[转载]
2011-05-27 14:00 10471、首先是:java.lang.OutOfMemoryErro ... -
synchronized与static synchronized 的区别
2011-02-22 14:37 29071.synchronized与static synchro ...
相关推荐
java实现连接登录Ftp,下载Ftp指定文件夹下的所有文件,并解压所有压缩文件,同时支持对指定文件夹进行文件压缩
java 从ftp服务器下载文件!方便快捷,哈哈!
java从ftp下载和上传文件.和sftp下载上传文件,jar包已经maven化.放入仓库即可使用
使用Java写的完整的上传下载Ftp上的文件案例。 请大家参考。 作者:宋海康
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
JAVA获取FTP文件列表,功能齐全。包括:链接到服务器,上传文件到FTP服务器,从FTP服务器上下载文件并返回下载文件长度,返回FTP目录下的文件列表,删除FTP上的文件及目录,关闭链接。
实现从FTP服务器下载PDF,标有注释。
对FTP服务器文件的基本操做:上传下载递归目录遍历等。
java SSH和 FTP从服务器下载文件到本地.zip
用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc 用Java实现FTP批量大文件上传下载.doc
可能需要定时的自动去检测服务器是否存在所需要的文件,如果有就自动通过ftp下载,以上为java实现代码
用Java实现FTP批量大文件上传下载(一) 本文介绍了在Java中,如何使用Java现有的可用的库来编写FTP客户端代码,并开发成Applet控件,做成基于Web的批量、大文件的上传下载控件。文章在比较了一系列FTP客户库的基础上...
java通过ftp三种方式 上传 下载文件: 1. 通过sun :sun.net.ftp.FtpClient 2. 通过apache:org.apache.commons.net.ftp.FTPClient 3. 通过edtftp: com.enterprisedt.net.ftp.FileTransferClient
GetButton部分为从FTP服务器下传一个文件; PutButton部分为向FTP服务器上传一个文件。 别忘了在程序中还要引入两个库文件(import sun.net.*,import sun.net.ftp.*)。 以下是这三部分的JAVA源程序: (1)显示FTP...
java,判断ftp中文件是否存在
java 连接 FTP 文件操作(上传,下载,删除,复制
Java实现FTP批量大文件上传下载.pdf
通过Java 实现FTP服务器上的大批量文件的上传和下载,处理大文件的上传和下载