真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼中壓縮文件 java文件怎么壓縮

java 如何壓縮文件

樓主是說(shuō)解壓了的文件大小只有33.1MB,但是卻占了51.2MB的空間嗎?

專(zhuān)注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)龍勝免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

如果是這個(gè)意思的話(huà),那我要告訴樓主,首先這個(gè)問(wèn)題和JAVA沒(méi)有關(guān)系,根據(jù)你的截圖,可以斷定你用的是FAT32文件系統(tǒng)。這只是文件存儲(chǔ)的形式,很正常。

簡(jiǎn)單的說(shuō),磁盤(pán)存儲(chǔ)數(shù)據(jù)的最小單位是簇,比方說(shuō)你的簇大小為128K,一個(gè)簇只能存放一個(gè)文件,然后你的一個(gè)文件只有16K,它占了這個(gè)簇,然后還有112K沒(méi)有用,是吧。但是那112K就不能再存放其它文件了。如果要存放其它文件,就要占另一個(gè)簇。

樓主,懂了吧,這跟簇的大小有關(guān),但是也不是簇越小越好,簇越小,讀寫(xiě)性能都有所下降。這是正常現(xiàn)象。如果你非覺(jué)得不舒服,那就用NTFS文件系統(tǒng)吧,把壓縮打開(kāi),就不會(huì)有這種情況了,希望對(duì)你有幫助

java壓縮文件的問(wèn)題

有三種方式實(shí)現(xiàn)java壓縮:

1、jdk自帶的包java.util.zip.ZipOutputStream,不足之處,文件(夾)名稱(chēng)帶中文時(shí),出現(xiàn)亂碼問(wèn)題,實(shí)現(xiàn)代碼如下:

/**

* 功能:把 sourceDir 目錄下的所有文件進(jìn)行 zip 格式的壓縮,保存為指定 zip 文件

* @param sourceDir 如果是目錄,eg:D:\\MyEclipse\\first\\testFile,則壓縮目錄下所有文件;

* 如果是文件,eg:D:\\MyEclipse\\first\\testFile\\aa.zip,則只壓縮本文件

* @param zipFile 最后壓縮的文件路徑和名稱(chēng),eg:D:\\MyEclipse\\first\\testFile\\aa.zip

*/

public File doZip(String sourceDir, String zipFilePath) throws IOException {

File file = new File(sourceDir);

File zipFile = new File(zipFilePath);

ZipOutputStream zos = null;

try {

// 創(chuàng)建寫(xiě)出流操作

OutputStream os = new FileOutputStream(zipFile);

BufferedOutputStream bos = new BufferedOutputStream(os);

zos = new ZipOutputStream(bos);

String basePath = null;

// 獲取目錄

if(file.isDirectory()) {

basePath = file.getPath();

}else {

basePath = file.getParent();

}

zipFile(file, basePath, zos);

}finally {

if(zos != null) {

zos.closeEntry();

zos.close();

}

}

return zipFile;

}

/**

* @param source 源文件

* @param basePath

* @param zos

*/

private void zipFile(File source, String basePath, ZipOutputStream zos)

throws IOException {

File[] files = null;

if (source.isDirectory()) {

files = source.listFiles();

} else {

files = new File[1];

files[0] = source;

}

InputStream is = null;

String pathName;

byte[] buf = new byte[1024];

int length = 0;

try{

for(File file : files) {

if(file.isDirectory()) {

pathName = file.getPath().substring(basePath.length() + 1) + "/";

zos.putNextEntry(new ZipEntry(pathName));

zipFile(file, basePath, zos);

}else {

pathName = file.getPath().substring(basePath.length() + 1);

is = new FileInputStream(file);

BufferedInputStream bis = new BufferedInputStream(is);

zos.putNextEntry(new ZipEntry(pathName));

while ((length = bis.read(buf)) 0) {

zos.write(buf, 0, length);

}

}

}

}finally {

if(is != null) {

is.close();

}

}

}

2、使用org.apache.tools.zip.ZipOutputStream,代碼如下,

package net.szh.zip;

import java.io.BufferedInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.CRC32;

import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

public class ZipCompressor {

static final int BUFFER = 8192;

private File zipFile;

public ZipCompressor(String pathName) {

zipFile = new File(pathName);

}

public void compress(String srcPathName) {

File file = new File(srcPathName);

if (!file.exists())

throw new RuntimeException(srcPathName + "不存在!");

try {

FileOutputStream fileOutputStream = new FileOutputStream(zipFile);

CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,

new CRC32());

ZipOutputStream out = new ZipOutputStream(cos);

String basedir = "";

compress(file, out, basedir);

out.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

private void compress(File file, ZipOutputStream out, String basedir) {

/* 判斷是目錄還是文件 */

if (file.isDirectory()) {

System.out.println("壓縮:" + basedir + file.getName());

this.compressDirectory(file, out, basedir);

} else {

System.out.println("壓縮:" + basedir + file.getName());

this.compressFile(file, out, basedir);

}

}

/** 壓縮一個(gè)目錄 */

private void compressDirectory(File dir, ZipOutputStream out, String basedir) {

if (!dir.exists())

return;

File[] files = dir.listFiles();

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

/* 遞歸 */

compress(files[i], out, basedir + dir.getName() + "/");

}

}

/** 壓縮一個(gè)文件 */

private void compressFile(File file, ZipOutputStream out, String basedir) {

if (!file.exists()) {

return;

}

try {

BufferedInputStream bis = new BufferedInputStream(

new FileInputStream(file));

ZipEntry entry = new ZipEntry(basedir + file.getName());

out.putNextEntry(entry);

int count;

byte data[] = new byte[BUFFER];

while ((count = bis.read(data, 0, BUFFER)) != -1) {

out.write(data, 0, count);

}

bis.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

3、可以用ant中的org.apache.tools.ant.taskdefs.Zip來(lái)實(shí)現(xiàn),更加簡(jiǎn)單。

package net.szh.zip;

import java.io.File;

import org.apache.tools.ant.Project;

import org.apache.tools.ant.taskdefs.Zip;

import org.apache.tools.ant.types.FileSet;

public class ZipCompressorByAnt {

private File zipFile;

public ZipCompressorByAnt(String pathName) {

zipFile = new File(pathName);

}

public void compress(String srcPathName) {

File srcdir = new File(srcPathName);

if (!srcdir.exists())

throw new RuntimeException(srcPathName + "不存在!");

Project prj = new Project();

Zip zip = new Zip();

zip.setProject(prj);

zip.setDestFile(zipFile);

FileSet fileSet = new FileSet();

fileSet.setProject(prj);

fileSet.setDir(srcdir);

//fileSet.setIncludes("**/*.java"); 包括哪些文件或文件夾 eg:zip.setIncludes("*.java");

//fileSet.setExcludes(...); 排除哪些文件或文件夾

zip.addFileset(fileSet);

zip.execute();

}

}

測(cè)試一下

package net.szh.zip;

public class TestZip {

public static void main(String[] args) {

ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip");

zc.compress("E:\\test");

ZipCompressorByAnt zca = new ZipCompressorByAnt("E:\\szhzipant.zip");

zca.compress("E:\\test");

}

}

如何使用java壓縮文件夾成為zip包

在JDK中有一個(gè)zip工具類(lèi):

java.util.zip ? ?Provides classes for reading and writing the standard ZIP and

GZIP file formats.

使用此類(lèi)可以將文件夾或者多個(gè)文件進(jìn)行打包壓縮操作。

在使用之前先了解關(guān)鍵方法:

ZipEntry(String name) ????????Creates a new zip entry with the specified name.

使用ZipEntry的構(gòu)造方法可以創(chuàng)建一個(gè)zip壓縮文件包的實(shí)例,然后通過(guò)ZipOutputStream將待壓縮的文件以流的形式寫(xiě)進(jìn)該壓縮包中。具體實(shí)現(xiàn)代碼如下:

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名稱(chēng)的zip文件,并存放到zipFilePath路徑下?

*?@param?sourceFilePath?:待壓縮的文件路徑?

*?@param?zipFilePath?:壓縮后存放路徑?

*?@param?fileName?:壓縮后文件的名稱(chēng)?

*?@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.length1){??

System.out.println("待壓縮的文件目錄:"?+?sourceFilePath?+?"里面不存在文件,無(wú)需壓縮.");??

}else{??

fos?=?new?FileOutputStream(zipFile);??

zos?=?new?ZipOutputStream(new?BufferedOutputStream(fos));??

byte[]?bufs?=?new?byte[1024*10];??

for(int?i=0;isourceFiles.length;i++){??

//創(chuàng)建ZIP實(shí)體,并添加進(jìn)壓縮包??

ZipEntry?zipEntry?=?new?ZipEntry(sourceFiles[i].getName());??

zos.putNextEntry(zipEntry);??

//讀取待壓縮的文件并寫(xiě)進(jìn)壓縮包里??

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{??

//關(guān)閉流??

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("文件打包失敗!");??

}??

}??

}

搭建Java環(huán)境如何解壓縮

具體解壓縮方法如下:

Java壓縮解壓縮文件的方法有,第一中借助javajdk自帶的ZipOutputStream和ZipInputStream。第二種,借助第三方j(luò)ar,例如ApacheCommonsCompress和Ant。

前提,需要將Ant的ant、jar和ant-launcher、jar添加到classpath中。先創(chuàng)建一個(gè)Expander類(lèi),該類(lèi)繼承了Ant的org、apache、tools、ant、taskdefs、Expand類(lèi)。

第二步:使用Expander類(lèi)。

JAVA 程序中如何實(shí)現(xiàn)對(duì)RAR壓縮包文件中文件格式的判斷?

分類(lèi): 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言

問(wèn)題描述:

JAVA 程序中如何實(shí)現(xiàn)對(duì)RAR壓縮包文件中文件格式的判斷?

解析:

JAVA中使用java.util.zip.ZipOutputStream在對(duì)文件進(jìn)行壓縮時(shí),將把每一個(gè)文件實(shí)體封裝為java.util.zip.ZipEntry,反之,在使用java.util.zip.ZipInputStream在對(duì)文件進(jìn)行解壓縮時(shí),每個(gè)文件的訪(fǎng)問(wèn)也是通過(guò)訪(fǎng)問(wèn)ZipEntry對(duì)象來(lái)操作的,可以通過(guò)ZipEntry對(duì)象的getName()來(lái)得到當(dāng)初壓縮時(shí)對(duì)該文件的命名(通常為該文件相對(duì)路徑),當(dāng)然得到了該文件命名自然就可以對(duì)文件格式進(jìn)行判斷了!


本文標(biāo)題:java代碼中壓縮文件 java文件怎么壓縮
文章來(lái)源:http://weahome.cn/article/hgsjcd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部