Ⅰ java.util.zip最好在什麼軟體里運行
比如記事本、editpluse、notepad++ 這些寫完需要手動編譯
eclipse、netbeans 自動編譯
Ⅱ java.util.zip.ZipEntry裡面 ZipEntry.isDirectory() 是什麼意思
一個zip文件中有若干個文件和若干個文件夾
所以我們需要判斷,這個zip文件中包含的是文件還是文件夾
如:一個壓縮文件myZip.zip 中有 myText.txt(文本文件),myFile(文件夾)
那麼
ZipEntry.isDirectory() 是用來判斷myZip.zip中某一個選項是文件還是文件夾!
Ⅲ java.util.zip
java.util.zip用的默認UTF-編輯,你得字證你的zip中只有英文,這樣才不會出錯.
如果有中文或其它什麼的,就要要換包了.
你放在zip文件中的文件,相對路徑是這樣
/folder/folder/xxx.xml
java.util.zip.ZipFile zfile = new java.util.zip.ZipFile(zip路徑);
java.util.zip.ZipEntry entry = new java.util.zip.ZipEntry ("/folder/folder/xxx.xml
");
InputStream stream = zfile.getInputStream(entry);
這樣你就能取得文件流
Ⅳ 使用java.util.zip.ZipFile,壓縮包內文件數量過多則報錯問題.
import org.apache.commons.io.IOUtils;
/**
使用apache 的 IOUtils 能解決
**/
File zip = new File("");// 你的文件
FileInputStream fin = new FileInputStream(zip);
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
FileOutputStream fout = new FileOutputStream(new File("",
ze.getName()));
IOUtils.(zin, fout);
IOUtils.closeQuietly(fout);
zin.closeEntry();
}
IOUtils.closeQuietly(zin);
嗯。還有其他的方法你可以看一下。 IOUtils 的方法。
Ⅳ java.util.zip.ZipException這個問題怎麼解決
引入的jar包不對,或者你的壓縮文件不標准。
一般就會報這個錯誤。
Ⅵ 如何解決java.util.zip.ZipException
ZipException 其實就是zip包解壓錯誤 為什麼會在java項目中出現呢 因為jar包其實就等同於zip包 ,出現這個異常也就是項目下載jar包時 沒有下載完整 導致解壓jar異常 。so 你需要maven update 或者 install -U 更新下jar包 ,或者直接把倉庫中異常jar給刪除 重新下載
Ⅶ 怎樣用Java生成ZIP文件
import java.io.BufferedOutputStream;
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 {
/**
* 默認構造函數
*/
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 +"/";
//循環將文件夾中的文件打包
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("壓縮文件已經生成...");
} catch (Exception e) {
System.out.println("壓縮文件生成失敗...");
e.printStackTrace();
}
}
}
運行程序結果如下:
如果是使用java.util下的java.util.zip進行打包處理,可能會出現中文亂碼問題,這是因為java的zip方法不支持編碼格式的更改,我們可以使用ant.java下的zip工具類來進行打包處理。所以需要將ant.jar導入項目的lib目錄下。
Ⅷ java.util.Zip壓縮不了空目錄么
zip中不能含空目錄吧 ,遇到空目錄時,創建一個空子文件,可以解決
比如創建 dir1\empty.txt 0 byte
就能創建dir1