import java.io.BufferedOutputStream;
創(chuàng)新互聯(lián)公司主營普定網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都APP應用開發(fā),普定h5小程序定制開發(fā)搭建,普定網(wǎng)站營銷推廣歡迎普定等地區(qū)企業(yè)咨詢
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
* @project: Test
* @author chenssy
* @date 2013-7-28
* @Description: 文件壓縮工具類
* ? ? ? ? ? ? ? ? ? 將指定文件/文件夾壓縮成zip、rar壓縮文件
*/
public class CompressedFileUtil {
/**
* 默認構(gòu)造函數(shù)
*/
public CompressedFileUtil(){
}
/**
* @desc 將源文件/文件夾生成指定格式的壓縮文件,格式zip
* @param resourePath 源文件/文件夾
* @param targetPath ?目的壓縮文件保存路徑
* @return void
* @throws Exception
*/
public void compressedFile(String resourcesPath,String targetPath) throws Exception{
? File resourcesFile = new File(resourcesPath); ? ? //源文件
? File targetFile = new File(targetPath); ? ? ? ? ? //目的
? //如果目的路徑不存在,則新建
? if(!targetFile.exists()){ ?
? ? ? targetFile.mkdirs();
? }
? String targetName = resourcesFile.getName()+".zip"; ? //目的壓縮文件名
? FileOutputStream outputStream = new FileOutputStream(targetPath+"\\"+targetName);
? ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(outputStream));
? createCompressedFile(out, resourcesFile, "");
? out.close();
}
/**
* @desc 生成壓縮文件。
* ? ? ? ? ? ? ? ? ?如果是文件夾,則使用遞歸,進行文件遍歷、壓縮
* ? ? ? 如果是文件,直接壓縮
* @param out ?輸出流
* @param file ?目標文件
* @return void
* @throws Exception
*/
public void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{
? //如果當前的是文件夾,則進行進一步處理
? if(file.isDirectory()){
? ? ? //得到文件列表信息
? ? ? File[] files = file.listFiles();
? ? ? //將文件夾添加到下一級打包目錄
? ? ? out.putNextEntry(new ZipEntry(dir+"/"));
? ?
? ? ? dir = dir.length() == 0 ? "" : dir +"/";
? ?
? ? ? //循環(huán)將文件夾中的文件打包
? ? ? for(int i = 0 ; i files.length ; i++){
? ? ? ? ? createCompressedFile(out, files[i], dir + files[i].getName()); ? ? ? ? //遞歸處理
? ? ? }
? }
? else{ ? //當前的是文件,打包處理
? ? ? //文件輸入流
? ? ? FileInputStream fis = new FileInputStream(file);
? ?
? ? ? out.putNextEntry(new ZipEntry(dir));
? ? ? //進行寫操作
? ? ? int j = ?0;
? ? ? byte[] buffer = new byte[1024];
? ? ? while((j = fis.read(buffer)) 0){
? ? ? ? ? out.write(buffer,0,j);
? ? ? }
? ? ? //關閉輸入流
? ? ? fis.close();
? }
}
public static void main(String[] args){
? CompressedFileUtil compressedFileUtil = new CompressedFileUtil();
? try {
? ? ? compressedFileUtil.compressedFile("G:\\zip", "F:\\zip");
? ? ? System.out.println("壓縮文件已經(jīng)生成...");
? } catch (Exception e) {
? ? ? System.out.println("壓縮文件生成失敗...");
? ? ? e.printStackTrace();
? }
}
}
運行程序結(jié)果如下:
壓縮之前的文件目錄結(jié)構(gòu):
如果是使用java.util下的java.util.zip進行打包處理,可能會出現(xiàn)中文亂碼問題,這是因為java的zip方法不支持編碼格式的更改,我們可以使用ant.java下的zip工具類來進行打包處理。所以需要將ant.jar導入項目的lib目錄下。
導出Runnabled Jar File,選擇你要運行的主java類(含有main方法的java類)。導出jar包就可以運行,沒有Runnabled Jar File,右鍵項目導出jar也可以,之間有一步是選擇Main class,選擇你的那個要運行的java類(含有main 方法)導出的jar包就可以運行
用java代碼壓縮應用到程序了,代碼一般是比較復雜的,對pdf文件的mate標簽優(yōu)化,這類標簽包括三類,pdf文件不是網(wǎng)頁就是個文件,何況我們可以用pdf壓縮工具壓縮,下面有個解決方法,樓主可以做參照。
1:點擊打開工具,打開主頁面上有三個功能進行選擇,我們選擇pdf文件壓縮。
2:這這個頁面中我們選擇pdf文件在這里打開,點擊“添加文件”按鈕將文件添加進來。
3:然后在頁面中點擊“開始壓縮”就可以開始壓縮文件了。
4:壓縮完成的文件頁面會顯示已經(jīng)完成。
package com.lch.test;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZIP {
public static void main(String[] argv) throws Exception {
ZipFile zf = new ZipFile("E:\\wk\\LBSLEMIS201106141057\\LBSLEMIS\\test\\com\\lch\\test\\filename.zip");
for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
String zipEntryName = ((ZipEntry) entries.nextElement()).getName();
System.out.println(zipEntryName);
}
}
}
用javad 的ZipFile類的ZipEntry方法試一下 找到ZIP里面的ZipEntry方法 讀取Zip里面壓縮文件的內(nèi)容
有可能會引用外包
你好,我不知道你說的dzp是什么格式文件,但如果是zip的壓縮文件,可以看下我的這段代碼
ZipFile file = new ZipFile("d:\\1.zip");
ZipEntry entry = file.getEntry("1.xml"); //假如壓縮包里的文件名是1.xml
InputStream in=file.getInputStream(entry);
最后就是按照java中一貫的流的處理方式即可
可以不解壓,zip包里的一個對象就是一個ZipEntry
找到你想要的那個ZipEntry,用文流寫出來就可以了。追問通過ZipEntry,然后用流就可以讀出里面的內(nèi)容了嗎?謝謝指點!
回答/**
* 解壓
* @param root 輸出目標
* @param zipfile zip文件
*/
protected void unzip(File root, File zipfile, String file) throws Exception {
// 解壓文件不存在時返回
if (!zipfile.exists()) {
return;
}
// 釋放目錄不存時創(chuàng)建
if (!root.exists()) {
root.mkdirs();
}
// 釋放目錄不為目錄時返回
if (!root.isDirectory()) {
return;
}
FileInputStream fin = new FileInputStream(zipfile);
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry entry = null;
while ((entry = zin.getNextEntry()) != null) {
// if (!entry.getName().endsWith(file)) {
// continue;
// }
File tmp = new File(root, entry.getName());
if (entry.isDirectory()) {
tmp.mkdirs();
} else {
byte[] buff = new byte[4096];
int len = 0;
tmp.getParentFile().mkdirs();
FileOutputStream fout = new FileOutputStream(tmp);
while ((len = zin.read(buff)) != -1) {
fout.write(buff, 0, len);
}
zin.closeEntry();
fout.close();
}
}
}
這里完整的解壓代碼。
// if (!entry.getName().endsWith(file)) {
// continue;
// }
這段打開就是只解出一個你指定的文件。
下面是測試用的。
public static void main(String[] args) throws Exception {
new CommonFiles().unzip(new File("D:\\"), new File("D:\\test.zip"),"file.txt");
}
這個例子會在D盤生成型個test文件夾,file.txt就會在里面,(里面也可能會有多個文件夾,這個取決于壓縮包里文件的度)
Java代碼
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
class ZipTest {
// 壓縮
public static void zip(String zipFileName, String inputFile)
throws Exception {
File f = new File(inputFile);
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
zip(out, f, f.getName());
System.out.println("zip done");
out.close();
}
private static void zip(ZipOutputStream out, File f, String base)
throws Exception {
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
while ((b = in.read()) != -1)
out.write(b);
in.close();
}
public static void main(String[] args) {
try {
ZipTest t = new ZipTest();
t.zip("c:\\test.zip", "c:\\1.txt");
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
}
當前題目:java代碼導出壓縮包,java 導出包
網(wǎng)站URL:http://muchs.cn/article48/hssihp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、面包屑導航、商城網(wǎng)站、小程序開發(fā)、企業(yè)網(wǎng)站制作、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)