1. 程式人生 > >java把指定資料夾下的所有檔案壓縮成zip包

java把指定資料夾下的所有檔案壓縮成zip包



<span style="font-size:18px;background-color:rgb(204,204,204);">package cn.gov.csrc.base.util;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
 * 將資料夾下面的檔案
 * 打包成zip壓縮檔案
 * 
 * @author admin
 *
 */
public final class FileToZip {


private FileToZip(){}

/**
* 將存放在sourceFilePath目錄下的原始檔,打包成fileName名稱的zip檔案,並存放到zipFilePath路徑下
* @param sourceFilePath :待壓縮的檔案路徑
* @param zipFilePath :壓縮後存放路徑
* @param fileName :壓縮後文件的名稱
* @return
*/
public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName){
boolean flag = false;
File sourceFile = new File(sourceFilePath);
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos = null;
ZipOutputStream zos = null;

if(sourceFile.exists() == false){
System.out.println("待壓縮的檔案目錄:"+sourceFilePath+"不存在.");
}else{
try {
File zipFile = new File(zipFilePath + "/" + fileName +".zip");
if(zipFile.exists()){
System.out.println(zipFilePath + "目錄下存在名字為:" + fileName +".zip" +"打包檔案.");
}else{
File[] sourceFiles = sourceFile.listFiles();
if(null == sourceFiles || sourceFiles.length<1){
System.out.println("待壓縮的檔案目錄:" + sourceFilePath + "裡面不存在檔案,無需壓縮.");
}else{
fos = new FileOutputStream(zipFile);
zos = new ZipOutputStream(new BufferedOutputStream(fos));
byte[] bufs = new byte[1024*10];
for(int i=0;i<sourceFiles.length;i++){
//建立ZIP實體,並新增進壓縮包
ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());
zos.putNextEntry(zipEntry);
//讀取待壓縮的檔案並寫進壓縮包裡
fis = new FileInputStream(sourceFiles[i]);
bis = new BufferedInputStream(fis, 1024*10);
int read = 0;
while((read=bis.read(bufs, 0, 1024*10)) != -1){
zos.write(bufs,0,read);
}
}
flag = true;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally{
//關閉流
try {
if(null != bis) bis.close();
if(null != zos) zos.close();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
return flag;
}

public static void main(String[] args){
String sourceFilePath = "D:\\TestFile";
String zipFilePath = "D:\\tmp";
String fileName = "12700153file";
boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath, fileName);
if(flag){
System.out.println("檔案打包成功!");
}else{
System.out.println("檔案打包失敗!");
}
}

}
</span>

相關推薦

java指定資料所有檔案壓縮zip

<span style="font-size:18px;background-color:rgb(204,204,204);">package cn.gov.csrc.base.util; import java.io.BufferedInputStream

Java遞迴刪除指定資料所有檔案

Java遞迴刪除指定資料夾下所有檔案 工具類封裝 public class FileUtils{ public static boolean delAllFile(String path) { return delAllFile(new File(path)

Java遍歷資料所有檔案並替換指定字串

應用場景:比如有一個深層次的檔案目錄結構,如:javaAPI每個檔案裡面都有相同的內容,而我們要統一修改為其他內容。上千個檔案如果一個個修改顯得太不明智。import java.io.BufferedReader; import java.io.File; import ja

樹形結構展示指定資料所有檔案資料

1:匯入os包 import os 2:實現功能 <1>:使用os.walk(path)方法: def use_walk(path): for (root, dirs, files) in os.walk(path): """ ro

輸出指定資料所有檔案的路徑

#include<iostream> #include<fstream> #include<string> #include<atlstr.h> using namespace std; CString Add="\\*.*"

C#/.NET中刪除指定資料所有檔案資料的幾種方法彙總

我們知道,在C#/.NET中的System.IO名稱空間下,都是關於檔案和資料夾資訊操作的類。如果在開發中有刪除指定資料夾下所有檔案和資料夾這樣的需要,應該如何使用C#/.NET來實現這個需求呢?方法一:直接刪除整個指定資料夾使用使用Directory.Delete("資料

python查詢指定資料所有檔案並按修改時間倒序排列

程式碼如下: import os, glob, time def search_all_files_return_by_time_reversed(path, reverse=True):

java獲取指定資料所有檔案

public static void readfile(String filepath) throws FileNotFoundException, IOException { try { Fi

Java 列出資料所有檔案,符合條件的檔案複製到指定目錄

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class TestFile { public static void main(String[] a

Java 替換資料所有檔案指定的內容

我的上一篇部落格提到了找到檔案中的中文。之前的程式碼還可以做一個擴充套件。可以作為一個強大的查詢功能使用。關鍵字查詢,這個功能大家可以思考一下,今後我的部落格也會去貼上這樣的關鍵字查詢的功能的程式碼,能跟大家討論分析一下。 今天的替換的功能也是基於上篇

linux 命令替換資料所有檔案指定字串為

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java 遞迴呼叫自動讀取某資料所有檔案(遞迴呼叫)

import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; public cl

C#兩種方式獲取指定資料所有子目錄及檔案

using System.IO; /// <summary> /// 獲取指定目錄下的所有資料夾名 /// </summary> /// <param name="path">目錄路徑</param> /// <

Java 獲取資料所有檔案

/** * 獲取路徑下的所有檔案/資料夾 * @param directoryPath 需要遍歷的資料夾路徑 * @param isAddDirectory 是否將

python列出指定資料所有給定字尾名的檔案

寫了一個小程式來實現這個功能。 程式的輸入是指定的資料夾路徑和指定的字尾名(預設為列出所有檔案) 程式碼如下: #coding:utf8 import os def listfile(dirname,postfix = ''): filelist = []

複製一個資料所有檔案(包括子資料)並修改檔案字尾名 java實現加密文件unlock

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.i

java遞迴實現複製一個資料所有檔案的功能

今天開始學習java的IO,學了一個複製檔案的例子程式後想自己實現以下如何複製一個資料夾,複製檔案的例子程式如下: package io.github.liuzhan214; import java.io.File; import java.io.IOEx

批量修改資料所有檔案的名稱

所需工具:cmd、excel、記事本 一、利用cmd將資料夾下的內容全部輸出 假設要匯出的內容在E:/graduate/pic下,輸入: e: cd graduate cd pic dir > name.txt 將其中所有檔案的名字都存入name.txt中,建立的資料夾在路徑之下。

python 獲取指定資料所以檔案

reportPath =資料夾路徑 listdir=以一個list返回資料夾下所以檔案 dirs = os.listdir(reportPath)print(dirs) def __get_report(self): """獲取最新測試報告""" dirs = os.listdir(repo

Java-讀取指定資料檔名

 兩種返回方式 1. 陣列 2.集合 import java.io.File; import java.util.ArrayList; public class Test { /** * 陣列 */ public static String[] getFileNa