「javaio流压缩」Java压缩流

博主:adminadmin 2023-01-19 15:51:05 289

本篇文章给大家谈谈javaio流压缩,以及Java压缩流对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java 压缩excel后 excel变成空的了

首先创建文件目录,然后生成Excel文件到创建的目录下,

通过IO流压缩Excel文件成zip文件 到指定目录,最后删除指定目录下所有的Excel文件。

package pack.java.io.demo;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

import jxl.Workbook;

import jxl.format.Alignment;

import jxl.format.Border;

import jxl.format.BorderLineStyle;

import jxl.format.Colour;

import jxl.format.UnderlineStyle;

import jxl.format.VerticalAlignment;

import jxl.write.Label;

import jxl.write.WritableCellFormat;

import jxl.write.WritableFont;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

/**

* zip压缩文件实例

* add by 周海涛

* @author Administrator

*

*/

public class ZipDemo {

/**

* @param args

* @throws IOException

* @throws WriteException

* @throws RowsExceededException

*/

public static void main(String[] args) throws RowsExceededException, WriteException, IOException {

String path = "C:/document/excel";

//创建文件夹;

createFile(path);

//创建Excel文件;

createExcelFile(path);

//生成.zip文件;

craeteZipPath(path);

//删除目录下所有的文件;

File file = new File(path);

//删除文件;

deleteExcelPath(file);

//重新创建文件;

file.mkdirs();

}

/**

* 创建文件夹;

* @param path

* @return

*/

public static String createFile(String path){

File file = new File(path);

//判断文件是否存在;

if(!file.exists()){

//创建文件;

boolean bol = file.mkdirs();

if(bol){

System.out.println(path+" 路径创建成功!");

}else{

System.out.println(path+" 路径创建失败!");

}

}else{

System.out.println(path+" 文件已经存在!");

}

return path;

}

/**

* 在指定目录下创建Excel文件;

* @param path

* @throws IOException

* @throws WriteException

* @throws RowsExceededException

*/

public static void createExcelFile(String path) throws IOException, RowsExceededException, WriteException{

for(int i =0;i3;i++){

//创建Excel;

WritableWorkbook workbook = Workbook.createWorkbook(new File(path+"/" + new SimpleDateFormat("yyyyMMddHHmmsss").format(new Date() )+"_"+(i+1)+".xls"));

//创建第一个sheet文件;

WritableSheet sheet = workbook.createSheet("导出Excel文件", 0);

//设置默认宽度;

sheet.getSettings().setDefaultColumnWidth(30);

//设置字体;

WritableFont font1 = new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);

WritableCellFormat cellFormat1 = new WritableCellFormat(font1);

//设置背景颜色;

cellFormat1.setBackground(Colour.BLUE_GREY);

//设置边框;

cellFormat1.setBorder(Border.ALL, BorderLineStyle.DASH_DOT);

//设置自动换行;

cellFormat1.setWrap(true);

//设置文字居中对齐方式;

cellFormat1.setAlignment(Alignment.CENTRE);

//设置垂直居中;

cellFormat1.setVerticalAlignment(VerticalAlignment.CENTRE);

//创建单元格

Label label1 = new Label(0, 0, "第一行第一个单元格(测试是否自动换行!)",cellFormat1);

Label label2 = new Label(1, 0, "第一行第二个单元格",cellFormat1);

Label label3 = new Label(2, 0, "第一行第三个单元格",cellFormat1);

Label label4 = new Label(3, 0, "第一行第四个单元格",cellFormat1);

//添加到行中;

sheet.addCell(label1);

sheet.addCell(label2);

sheet.addCell(label3);

sheet.addCell(label4);

//给第二行设置背景、字体颜色、对齐方式等等;

WritableFont font2 = new WritableFont(WritableFont.ARIAL,14,WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLUE2);

WritableCellFormat cellFormat2 = new WritableCellFormat(font2);

cellFormat2.setAlignment(Alignment.CENTRE);

cellFormat2.setBackground(Colour.PINK);

cellFormat2.setBorder(Border.ALL, BorderLineStyle.THIN);

cellFormat2.setWrap(true);

//创建单元格;

Label label11= new Label(0, 1, "第二行第一个单元格(测试是否自动换行!)",cellFormat2);

Label label22 = new Label(1, 1, "第二行第二个单元格",cellFormat2);

Label label33 = new Label(2, 1, "第二行第三个单元格",cellFormat2);

Label label44 = new Label(3, 1, "第二行第四个单元格",cellFormat2);

sheet.addCell(label11);

sheet.addCell(label22);

sheet.addCell(label33);

sheet.addCell(label44);

//写入Excel表格中;

workbook.write();

//关闭流;

workbook.close();

}

}

/**

* 生成.zip文件;

* @param path

* @throws IOException

*/

public static void craeteZipPath(String path) throws IOException{

ZipOutputStream zipOutputStream = null;

File file = new File(path+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+".zip");

zipOutputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(file)));

File[] files = new File(path).listFiles();

FileInputStream fileInputStream = null;

byte[] buf = new byte[1024];

int len = 0;

if(files!=null files.length 0){

for(File excelFile:files){

String fileName = excelFile.getName();

fileInputStream = new FileInputStream(excelFile);

//放入压缩zip包中;

zipOutputStream.putNextEntry(new ZipEntry(path + "/"+fileName));

//读取文件;

while((len=fileInputStream.read(buf)) 0){

zipOutputStream.write(buf, 0, len);

}

//关闭;

zipOutputStream.closeEntry();

if(fileInputStream != null){

fileInputStream.close();

}

}

}

if(zipOutputStream !=null){

zipOutputStream.close();

}

}

/**

* 删除目录下所有的文件;

* @param path

*/

public static boolean deleteExcelPath(File file){

String[] files = null;

if(file != null){

files = file.list();

}

if(file.isDirectory()){

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

boolean bol = deleteExcelPath(new File(file,files[i]));

if(bol){

System.out.println("删除成功!");

}else{

System.out.println("删除失败!");

}

}

}

return file.delete();

}

}

java Zip压缩输入输出流问题

out.putNextEntry(new ZipEntry(base + "/"));// 写入此目录的Entry 这句应该是将文件压入zip文件的根目录下

base = base.length() == 0 ? "" : base + "/";// 判断参数是否为空

这句子是判断写入压缩文件的目录,默认写入压缩文件的根目录

有hello这个文件夹应该是你src中有这个文件吧

java中zip压缩输入输出流的问题,ZipEntry()方法里的参数到底什么意思

ZipEntry 用于保存一些被压缩文件的信息,如文件名,最后访问时间,最后修改时间,创建时间,文件大小,crc 校验值 等信息。

ZipEntry 具有一个带 String 类型参数的构造方法:ZipEntry(String name), name 是入口名称,就是打开压缩文件时,看到的里面的文件名称。

可以看一下它的源码,下面是部分源码:

public

class ZipEntry implements ZipConstants, Cloneable {

    String name;        // entry name

    long time = -1;     // last modification time

    FileTime mtime;     // last modification time, from extra field data

    FileTime atime;     // last access time, from extra field data

    FileTime ctime;     // creation time, from extra field data

    long crc = -1;      // crc-32 of entry data

    long size = -1;     // uncompressed size of entry data

    long csize = -1;    // compressed size of entry data

    int method = -1;    // compression method

    int flag = 0;       // general purpose flag

    byte[] extra;       // optional extra field data for entry

    String comment;     // optional comment string for entry

    

    ...

}

关于javaio流压缩和Java压缩流的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。