• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tbwshc

            tbw

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            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;
              }
            }
            /**
              *
              *獲得當前系統時間
              */
            /*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();
              }
            }
            }

            這個是我從網上找的,可是下載2個G的壓縮包打不開,幾百兆的可以!求解
            posted on 2012-06-13 15:01 tbwshc 閱讀(2195) 評論(0)  編輯 收藏 引用
            久久亚洲国产成人精品无码区| 久久综合噜噜激激的五月天| 色综合久久精品中文字幕首页| 91久久精一区二区三区大全| 国产精品九九久久免费视频| 久久久久国产一区二区| 色婷婷综合久久久久中文| 久久99精品久久久久久水蜜桃| 狠狠色婷婷久久综合频道日韩| a高清免费毛片久久| 精品久久久一二三区| 青青青青久久精品国产| 中文字幕无码久久精品青草| 99久久国产综合精品网成人影院| 久久妇女高潮几次MBA| 人妻少妇精品久久| 99久久精品国产毛片| 久久久久久久久久久久中文字幕| 美女久久久久久| 国产免费久久久久久无码| 久久久久久久人妻无码中文字幕爆| 久久亚洲中文字幕精品一区| 精品无码久久久久久尤物| 久久精品成人欧美大片| 人妻无码αv中文字幕久久| 一本色道久久88综合日韩精品| 91麻豆精品国产91久久久久久 | 久久人人爽人人爽人人片AV麻烦| 久久精品成人国产午夜| 久久狠狠高潮亚洲精品| 99久久99久久精品国产片果冻| 午夜肉伦伦影院久久精品免费看国产一区二区三区| 97久久超碰国产精品2021| 久久久久久久久久久久中文字幕 | 怡红院日本一道日本久久| 久久精品国产久精国产果冻传媒| 亚洲一区精品伊人久久伊人| 亚洲人成电影网站久久| 亚洲AⅤ优女AV综合久久久| 欧美激情精品久久久久久久九九九| 国产巨作麻豆欧美亚洲综合久久 |