java解壓各種類型的文件「java解壓zip文件為空」

開發項目過程中,會用到很多工具類,這些就不需要自己花時間去實現了,可以到網上查符合自己要求類,節約時間,提高開發效率。

Java實用工具類:實現zip格式文件壓縮方法,對文件可加密

壓縮工具類代碼

public class ZipToFile {

public static final String ZIP_FILENAME = “C:\XJPDA.zip”;// 需要解壓縮的文件名

public static final String ZIP_DIR = “D:\wj\Java圖形用戶界面的設計與實現相關源代碼\”;// 需要壓縮的文件夾

public static final String UN_ZIP_DIR = “C:\”;// 要解壓的文件目錄

public static final int BUFFER = 1024;// 緩存大小

/**

* zip壓縮功能. 壓縮baseDir(文件夾目錄)下所有文件,包括子目錄

*

* @throws Exception

*/

public static void zipFile(String baseDir, String fileName)

throws Exception {

List fileList = getSubFiles(new File(baseDir));

ZipOutputStream zos = new ZipOutputStream(

new FileOutputStream(fileName));

zos.setEncoding(System.getProperty(“sun.jnu.encoding”));

ZipEntry ze = null;

byte[] buf = new byte[BUFFER];

int readLen = 0;

for (int i = 0; i < fileList.size(); i++) {

File f = (File) fileList.get(i);

ze = new ZipEntry(getAbsFileName(baseDir, f));

ze.setSize(f.length());

ze.setTime(f.lastModified());

zos.putNextEntry(ze);

InputStream is = new BufferedInputStream(new FileInputStream(f));

while ((readLen = is.read(buf, 0, BUFFER)) != -1) {

zos.write(buf, 0, readLen);

}

is.close();

}

zos.close();

}

public static void main(String[] args) {

try {

zipFile(ZIP_DIR, “D:\zip\Java圖形用戶界面的設計與實現相關源代碼.zip”);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

Java實用工具類:實現zip格式文件壓縮方法,對文件可加密

/**

* 給定根目錄,返回另一個文件名的相對路徑,用於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 getSubFiles(File baseDir) {

List ret = new ArrayList();

File[] tmp = baseDir.listFiles();

for (int i = 0; i < tmp.length; i++) {

if (tmp[i].isFile())

ret.add(tmp[i]);

if (tmp[i].isDirectory())

ret.addAll(getSubFiles(tmp[i]));

}

return ret;

}

/**

* 解壓縮功能. 將ZIP_FILENAME文件解壓到ZIP_DIR目錄下.

*

* @throws Exception

*/

public static void upZipFile() throws Exception {

ZipFile zfile = new ZipFile(ZIP_FILENAME);

Enumeration zList = zfile.getEntries();

ZipEntry ze = null;

byte[] buf = new byte[1024];

while (zList.hasMoreElements()) {

ze = (ZipEntry) zList.nextElement();

if (ze.isDirectory()) {

File f = new File(ZIP_DIR + ze.getName());

f.mkdir();

continue;

}

OutputStream os = new BufferedOutputStream(new FileOutputStream(

getRealFileName(ZIP_DIR, ze.getName())));

InputStream is = new BufferedInputStream(zfile.getInputStream(ze));

int readLen = 0;

while ((readLen = is.read(buf, 0, 1024)) != -1) {

os.write(buf, 0, readLen);

}

is.close();

os.close();

}

zfile.close();

}

/**

* 給定根目錄,返回一個相對路徑所對應的實際文件名.

*

* @param baseDir

* 指定根目錄

* @param absFileName

* 相對路徑名,來自於ZipEntry中的name

* @return java.io.File 實際的文件

*/

public static File getRealFileName(String baseDir, String absFileName) {

String[] dirs = absFileName.split(“/”);

File ret = new File(baseDir);

if (dirs.length > 1) {

for (int i = 0; i < dirs.length – 1; i++) {

ret = new File(ret, dirs[i]);

}

if (!ret.exists())

ret.mkdirs();

ret = new File(ret, dirs[dirs.length – 1]);

return ret;

}

return ret;

}

/**

* 給zip文件加密方法,需要下載EncryptZip.jar包

*

* @param zipDir

* 要加密的壓縮文件

* @param EncryptZipFile

* 加密後文件

* @param password

*密碼

*/

public static void encryptionFile(String zipDir,String EncryptZipFile,String password){

System.out.println(“===== 加密 =====”);

File file = new File(zipDir);

byte[] zipByte = ZipOutput.getEncryptZipByte(file.listFiles(), password);

FileUtils.writeByteFile(zipByte, new File(EncryptZipFile));

System.out.println(“===== Encrypt Success =====”);

//return “success”;

}

}

Java實用工具類:實現zip格式文件壓縮方法,對文件可加密

以上,是我實際項目中用過的zip文件壓縮工具類,僅供參考,有什麼好的方法,可以評論區交流。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/235165.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-12 11:51
下一篇 2024-12-12 11:51

相關推薦

發表回復

登錄後才能評論