日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

根据输入时间段备份压缩日志文件

發布時間:2025/6/17 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据输入时间段备份压缩日志文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據輸入時間段備份壓縮日志文件為tar包,

ant-1.7.1.jar

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.zip.GZIPOutputStream;import org.apache.tools.tar.TarEntry; import org.apache.tools.tar.TarOutputStream;public class Test {//不能對每層都包含文件和目錄的多層次目錄結構打包public static void CompressedFiles_Gzip(String folderPath, String targzipFilePath) { File srcPath =new File(folderPath); int length=srcPath.listFiles().length; byte[] buf = new byte[1024]; //設定讀入緩沖區尺寸 File[] files = srcPath.listFiles(); try { //建立壓縮文件輸出流 FileOutputStream fout=new FileOutputStream(targzipFilePath); //建立tar壓縮輸出流 TarOutputStream tout=new TarOutputStream(fout); for(int i=0;i<length;i++) { String filename=srcPath.getPath()+File.separator+files[i].getName(); //打開需壓縮文件作為文件輸入流 FileInputStream fin=new FileInputStream(filename); //filename是文件全路徑 TarEntry tarEn=new TarEntry(files[i]); //此處必須使用new TarEntry(File file); //tarEn.setName(files[i].getName()); //此處需重置名稱,默認是帶全路徑的,否則打包后會帶全路徑 tout.putNextEntry(tarEn); int num; while ((num=fin.read(buf)) != -1) { tout.write(buf,0,num); } tout.closeEntry(); fin.close(); }tout.close(); fout.close(); //建立壓縮文件輸出流 FileOutputStream gzFile=new FileOutputStream(targzipFilePath+".gz"); //建立gzip壓縮輸出流 GZIPOutputStream gzout=new GZIPOutputStream(gzFile); //打開需壓縮文件作為文件輸入流 FileInputStream tarin=new FileInputStream(targzipFilePath); //targzipFilePath是文件全路徑 int len; while ((len=tarin.read(buf)) != -1) { gzout.write(buf,0,len); } gzout.close(); gzFile.close(); tarin.close(); }catch(FileNotFoundException e) { System.out.println(e); }catch(IOException e) { System.out.println(e); } }//循環遍歷目錄結構中的文件并添加至tar的輸出流public static void addFiles(TarOutputStream tout,String folderPath) { File srcPath =new File(folderPath); int length=srcPath.listFiles().length; byte[] buf = new byte[1024]; //設定讀入緩沖區尺寸 File[] files = srcPath.listFiles(); try { for(int i=0;i<length;i++) { if(files[i].isFile()){System.out.println("file:"+files[i].getName());String filename=srcPath.getPath()+File.separator+files[i].getName(); //打開需壓縮文件作為文件輸入流 FileInputStream fin=new FileInputStream(filename); //filename是文件全路徑 TarEntry tarEn=new TarEntry(files[i]); //此處必須使用new TarEntry(File file); //System.out.println("--------"+files[i].getParentFile().getName());tarEn.setName(files[i].getParentFile().getName()+"\\"+files[i].getName()); //此處需重置名稱,默認是帶全路徑的,否則打包后會帶全路徑 tout.putNextEntry(tarEn); int num; while ((num=fin.read(buf)) != -1) { tout.write(buf,0,num); } tout.closeEntry(); fin.close(); }else{System.out.println(files[i].getPath());addFiles(tout,files[i].getPath());}} }catch(FileNotFoundException e) { System.out.println(e); }catch(IOException e) { System.out.println(e); } }//生成tar并壓縮成tar.gzpublic static void WriteToTarGzip(String folderPath, String targzipFilePath) { byte[] buf = new byte[1024]; //設定讀入緩沖區尺寸 try { //建立壓縮文件輸出流 FileOutputStream fout=new FileOutputStream(targzipFilePath); //建立tar壓縮輸出流 TarOutputStream tout=new TarOutputStream(fout); addFiles(tout,folderPath); tout.close();fout.close(); //建立壓縮文件輸出流 FileOutputStream gzFile=new FileOutputStream(targzipFilePath+".gz"); //建立gzip壓縮輸出流 GZIPOutputStream gzout=new GZIPOutputStream(gzFile); //打開需壓縮文件作為文件輸入流 FileInputStream tarin=new FileInputStream(targzipFilePath); //targzipFilePath是文件全路徑 int len; while ((len=tarin.read(buf)) != -1) { gzout.write(buf,0,len); } gzout.close(); gzFile.close(); tarin.close(); }catch(FileNotFoundException e) { System.out.println(e); }catch(IOException e) { System.out.println(e); } File tarfile=new File(targzipFilePath);tarfile.delete();}//循環遍歷目錄結構中的文件并添加至tar的輸出流(支持多個文件夾)public static void addFilesAll(TarOutputStream tout,File[] sources) { File srcPath =null; //File[] sources = new File[] {new File("D:\\test\\20160603"), new File("D:\\test\\20160302")};try { for(int k=0;k<sources.length;k++){srcPath=sources[k];int length=srcPath.listFiles().length; byte[] buf = new byte[1024]; //設定讀入緩沖區尺寸 File[] files = srcPath.listFiles(); for(int i=0;i<length;i++) { if(files[i].isFile()){//System.out.println("file:"+files[i].getName());String filename=srcPath.getPath()+File.separator+files[i].getName(); //打開需壓縮文件作為文件輸入流 FileInputStream fin=new FileInputStream(filename); //filename是文件全路徑 TarEntry tarEn=new TarEntry(files[i]); //此處必須使用new TarEntry(File file); //System.out.println("--------"+files[i].getParentFile().getName());tarEn.setName(files[i].getParentFile().getName()+"\\"+files[i].getName()); //此處需重置名稱,默認是帶全路徑的,否則打包后會帶全路徑 tout.putNextEntry(tarEn); int num; while ((num=fin.read(buf)) != -1) { tout.write(buf,0,num); } tout.closeEntry(); fin.close(); }else{System.out.println(files[i].getPath());addFiles(tout,files[i].getPath());}} }}catch(FileNotFoundException e) { System.out.println(e); }catch(IOException e) { System.out.println(e); } }//生成tar并壓縮成tar.gzpublic static void WriteToTarGzipAll(String targzipFilePath,File[] sources) { byte[] buf = new byte[1024]; //設定讀入緩沖區尺寸 try { //建立壓縮文件輸出流 FileOutputStream fout=new FileOutputStream(targzipFilePath); //建立tar壓縮輸出流 TarOutputStream tout=new TarOutputStream(fout); addFilesAll(tout,sources); tout.close();fout.close(); //建立壓縮文件輸出流 FileOutputStream gzFile=new FileOutputStream(targzipFilePath+".gz"); //建立gzip壓縮輸出流 GZIPOutputStream gzout=new GZIPOutputStream(gzFile); //打開需壓縮文件作為文件輸入流 FileInputStream tarin=new FileInputStream(targzipFilePath); //targzipFilePath是文件全路徑 int len; while ((len=tarin.read(buf)) != -1) { gzout.write(buf,0,len); } gzout.close(); gzFile.close(); tarin.close(); }catch(FileNotFoundException e) { System.out.println(e); }catch(IOException e) { System.out.println(e); } File tarfile=new File(targzipFilePath);tarfile.delete();}//判斷文件夾是否存在public static boolean isFile(String path){boolean flag=true;File file = new File(path); //判斷文件夾是否存在,如果不存在則創建文件夾 if (!file.exists()) { flag=false;}return flag;}public String runFileTar(String indir,String outdir,String sdate,String edate,int jg){ // String indir="D:\\test\\"; // String outdir="D:\\test\\"; // String sdate="20160301"; // String edate="20160905"; // int jg=2; //間隔月份String returnFlag="------執行成功----------";Calendar c = Calendar.getInstance();//獲得一個日歷的實例SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");try {Date sd=sdf.parse(sdate);Date ed=sdf.parse(edate);if (ed.getTime() < sd.getTime()) { //比較日期大小returnFlag="------開始時間大于結束時間----------";}else{File[] sources =null;//遍歷總時間while(ed.getTime() > sd.getTime()){c.setTime(sd);//設置日歷時間c.add(Calendar.MONTH,jg);//在日歷的月份上增加jg個月Date mthdate=c.getTime();c.setTime(mthdate); int day2=c.get(Calendar.DATE); c.set(Calendar.DATE,day2-1);mthdate=c.getTime();if(mthdate.getTime()>ed.getTime()){mthdate=ed;}Date mthfile=mthdate;Date mthdate2=mthdate;int fileCount=0;while(sd.getTime() <= mthdate2.getTime()){ //遍歷jg個月內的文件夾//判斷文件夾是否存在if(isFile(indir+sdf.format(mthdate2))){fileCount=fileCount+1;}//日期減一天 c.setTime(mthdate2); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1);mthdate2=c.getTime();} if(fileCount>0){sources = new File[fileCount];while(sd.getTime() <= mthdate.getTime()){ //遍歷jg個月內的文件夾//判斷文件夾是否存在if(isFile(indir+sdf.format(mthdate.getTime()))){File file=new File(indir+sdf.format(mthdate));fileCount=fileCount-1;sources[fileCount]=file;}//日期減一天 c.setTime(mthdate); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day-1);mthdate=c.getTime();} WriteToTarGzipAll(outdir+sdf.format(sd)+"-"+sdf.format(mthfile)+".tar",sources);}mthdate=mthdate2;c.setTime(sd);//設置日歷時間c.add(Calendar.MONTH,jg);//在日歷的月份上增加jg個月sd=c.getTime();}}} catch (Exception e) {e.printStackTrace();returnFlag="------運行出錯----------";}finally{System.out.println("finished");}return returnFlag;}public static void main(String[] args){//方法一:對于目錄中只含文件的文件夾打包并壓縮//CompressedFiles_Gzip("D:\\test\\20160302","D:\\test\\20160603.tar");//方法二:對目錄中既含有文件又含有遞歸目錄的文件夾打包//WriteToTarGzip("D:\\test\\20160603","D:\\test\\20160603.tar"); // File[] str = new File[2]; // str[0]=new File("D:\\test\\20160603"); // str[1] = new File("D:\\test\\20160302");//支持多個文件夾//File[] sources = new File[] {new File("D:\\test\\20160603"), new File("D:\\test\\20160302"), new File("D:\\test\\2016080633")};//WriteToTarGzipAll("D:\\test\\20160603.tar",sources); String indir="D:\\test\\";String outdir="D:\\test\\";String sdate="20160220";String edate="20170905";int jg=20; //間隔月份 Test test=new Test();String returnFlag=test.runFileTar(indir, outdir, sdate, edate, jg);} }

?

轉載于:https://www.cnblogs.com/Allen0603/p/5764967.html

總結

以上是生活随笔為你收集整理的根据输入时间段备份压缩日志文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天干天天干天天 | 超碰c| 老熟妇仑乱视频一区二区 | 亚洲欧美自拍视频 | 精品乱子一区二区三区 | 国产黄色特级片 | 91中文字幕网 | 91中文国产 | 日韩视频一区二区三区四区 | 国产美女精品久久久 | 精品少妇爆乳无码av无码专区 | 人人看人人模 | 欲色av| 中文字幕在线影院 | wwwxxoo| 国产精品黄色在线观看 | 99热97| 麻豆黄色片| 亚洲美女激情视频 | 欧美七区 | 午夜精品久久久久久毛片 | 一个色的综合 | 日本一区二区三区成人 | 一级黄色大毛片 | 亚洲v国产 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 亚洲四虎影院 | 亚洲女人天堂成人av在线 | 日本中文字幕网 | 99极品视频 | 美女aaa | 成人亚洲玉足脚交系列 | 高清国产一区二区三区四区五区 | 成年人网站免费看 | 日韩操比| 少妇全黄性生交片 | 天堂中文在线视频 | 青青草原成人 | 欧美日韩久久久久 | 午夜精品久久久久久毛片 | 亚洲精品爱爱 | 亚洲午夜无码久久 | 国内黄色一级片 | 国产有码在线 | 高潮又黄又刺激 | 午夜影院免费视频 | 69精品丰满人妻无码视频a片 | 久久男人天堂 | 十八禁视频网站在线观看 | 午夜免费体验区 | 九九在线精品视频 | 91网站在线观看视频 | av毛片在线看| 久久桃花网 | 成人性生交视频免费观看 | 永久免费无码av网站在线观看 | 久久久精品一区 | 黄色三级免费网站 | 国内精品在线观看视频 | 人妻无码一区二区三区久久99 | 久久久精品中文字幕麻豆发布 | 亚洲精品国产精品乱码不卡 | 精品久久免费观看 | 成人毛片视频在线观看 | 成人三级图片 | 网友自拍第一页 | 日韩久久在线 | 饥渴放荡受np公车奶牛 | 亚洲一区精品在线观看 | youjizz日韩 | 777黄色| 午夜不卡影院 | 国产精品一区二区三区在线看 | 亚洲av色香蕉一区二区三区 | 中文字幕成人一区 | 综合五月婷| 一级中文片 | 全黄性性激高免费视频 | 五月伊人网 | 少妇三级 | 精品国产鲁一鲁一区二区张丽 | 日韩国产精品久久 | 国产美女精品视频国产 | 国产乱人伦精品 | 亚洲av永久无码精品三区在线 | 欧美涩涩涩 | 国产高清精品一区 | 久久久久久久久久久99 | 天堂一二三区 | 亚州a级片 | 国产美女毛片 | 爽好多水快深点欧美视频 | 成人手机在线播放 | 99久久久无码国产 | 色午夜视频 | 日本老妇高潮乱hd | 二区在线播放 | 国产高清第一页 | 亚洲激情一区 |