当前位置:三九宝宝网 → 宝宝百科 → 宝宝知识 → 正文

请教一个Java压缩流的问题

更新:02-28 整理:39baobao.com
字体:

[请教一个excel公式的问题]结果要:=C列+D列+E列,是头两列相加,再减掉后一列 1公式为: =SUM(C:D)-SUM(E:E) 但输入后按回车键,公式里的“E列”自动变成了“B列”。奇怪得很 按上面的公式是不会错的,不知道你...+阅读

我来给你解释1. 因为java压缩文件 不是直接把文件内容压缩,而是把文件内容变成流,然后再压缩哦。2.base指的是一个文件路径,应该是你存放压缩文件的文件夹的路径。3.f.isDirectory() 是用来判断f文件是不是一个文件夹。如果是文件夹返回true 如果是一个具体的文件返回false4.base+"/"这个是用来拼接路径的,base是文件夹路径 /是文件夹路径分割符 比如 C:/Program Files/Java/my.java base表示C:/Program Files/Java / my.java 就是文件名。所以base+"/"就是用来表示一个具体的文件的路径的希望对你有所帮助!...

如何理解JAVA中的流概念

一、概念

Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。

二、分类

流的分类,Java的流分类比较丰富,刚接触的人看了后会感觉很晕。流分类的方式很多:

1、按照输入的方向分,输入流和输出流,输入输出的参照对象是Java程序。

2、按照处理数据的单位不同分,字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)。

3、按照功能的不同分,分节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的一种流,FileInputStream是一个接点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。

其实除了以上三种分类外,还有一些常常听到的一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。当然你也可以创建新的流类型,只要你需要。

三、流分类的关系

不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。这个四个类的关系如下:

字节流 字符流

输入流 InputStream Reader

输出流 OutputStream Writer

四、字节流和字符流的相互转换

1、从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。

2、从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。

一段JAVA的ZIP压缩程序

其实无非就是将你指定的文件地址根据递归的方式,一个个压缩啊。

out.putNextEntry(new ZipEntry(XXX)); 这里就是传入你要压缩的内容,

例如:如果是文件夹,则out.putNextEntry(new ZipEntry(文件夹名+"/"));

如果是文件夹中内容,则:out.putNextEntry(new ZipEntry(文件夹名+"/"+文件夹名));

其实你上面的程序还有点问题,并不能达到你预期的要求,我帮你修改下吧:

for循环中应该修改为这个:

for (int i = 0; i < fl.length; i++) { // 循环遍历数组中文件 zip(out, fl[i], base + fl[i].getName()); }

你好最近我也遇到用java压缩和解压向你咨询下你的解决方案什

package com.onewaveinc.cwds.commons.utils;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.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;import org.apache.tools.zip.ZipOutputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * author fz 27-30 * Description 把指定文件夹下的所有文件压缩为指定文件夹下指定zip文件;把指定文件夹下的zip文件解压到指定目录下 */public class ZipUtils { private static final Logger logger = LoggerFactory.getLogger(ZipUtils.class); private static final String SEPARATE = "/"; /** * Author fz 27-30 * param sourceDir 待压缩目录 * param zipFile 压缩文件名称 * throws Exception * Description 把sourceDir目录下的所有文件进行zip格式的压缩,保存为指定zip文件 */ public static void zip(String sourceDir, String zipFile) throws Exception { OutputStream os = null;// try { os = new FileOutputStream(zipFile); BufferedOutputStream bos = new BufferedOutputStream(os); ZipOutputStream zos = new ZipOutputStream(bos); File file = new File(sourceDir); String basePath = null; if (file.isDirectory()) { basePath = file.getPath(); } else { // 直接压缩单个文件时,取父目录 basePath = file.getParent(); } zipFile(file, basePath, zos); zos.closeEntry(); zos.close();// } catch (Exception e) {// logger.error("压缩文件或文件夹" + sourceDir + "时发生异常");// e.printStackTrace();// } } /** * Author fz 27-30 * param source 源文件 * param basePath 待压缩文件根目录 * param zos 文件压缩流 * Description 执行文件压缩成zip文件 */ private static void zipFile(File source, String basePath, ZipOutputStream zos) { File[] files = new File[0]; if (source.isDirectory()) { files = source.listFiles(); } else { files = new File[1]; files[0] = source; } //存相对路径(相对于待压缩的根目录) String pathName = null; byte[] buf = new byte[1024]; int length = 0; try { for (File file : files) { if (file.isDirectory()) { pathName = file.getPath().substring(basePath.length() + 1) + SEPARATE; zos.putNextEntry(new ZipEntry(pathName)); zipFile(file, basePath, zos); } else { pathName = file.getPath().substring(basePath.length() + 1); InputStream 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); } is.close(); } } } catch (Exception e) { logger.error("压缩文件" + source + "时发生异常"); e.printStackTrace(); } } /** * Author fz 27-30 * param zipfile 待解压文件 * param destDir 解压文件存储目录 * throws Exception * Description 解压zip文件,只能解压zip文件 */ SuppressWarnings("unchecked") public static void unZip(String zipfile, String destDir) throws Exception { destDir = destDir.endsWith(SEPARATE) ? destDir : destDir + SEPARATE; byte b[] = new byte[1024]; int length; ZipFile zipFile;// try { zipFile = new ZipFile(new File(zipfile)); Enumeration enumeration = zipFile.getEntries(); ZipEntry zipEntry = null; while (enumeration.hasMoreElements()) { zipEntry = (ZipEntry) enumeration.nextElement(); File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) { loadFile.mkdirs(); } else { if (!loadFile.getParentFile().exists()) { loadFile.getParentFile().mkdirs(); } OutputStream outputStream = new FileOutputStream(loadFile); InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) >0) outputStream.write(b, 0, length); outputStream.close(); inputStream.close(); } } zipFile.close();// } catch (IOException e) {// logger.error("解压文件" + zipfile + "时发生异常");// e.printStackTrace();// } }}

本文地址:https://www.39baobao.com/show/39_330240.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

请教VC一个回调函数的问题SetTimer?你不是调用的CWnd的SetTimer哦,你不是类的成员函数,当然不能直接调用类的成员函数了。比如你的类class A : public CWnd{ void test() { SetTimer(1, 1000, NULL); //...

请教一个雅思阅读的问题谢谢雅思阅读,考察的不是你的阅读理解能力,而是你的快速定位能力,千万不要文章全部都读完再去做题,这样你的速度会很慢很慢,一般你看一下题目,就大概知道这是什么类型的文章:比如说是科...

请教一个关于内存芯片容量的问题不同的厂家代码不一样,但容量标码一至,你这两个一个是128M,一个是256M 例:SAMSUNG K4H280838B-TCB0 主要含义:第1位——芯片功能K,代表是内存芯片。第2位——芯片类型4,代表DRAM。...

Java字符串压缩与解压public class Demo { public static void main(String[] args) { change(); change2(); } private static void change() { String str = "AAAbbbcc111NNNnn"; StringBuffer r...

java程序如何批量解压GZIP压缩给你一段单个文件解压gzip文件代码 批量解压的话 File f = new File("要解压的文件夹目录"); String paths[] = f.list(); // 取得文件夹下的文件 然后循环调用下面的方法就可以了...

请问您的那个java和c之间关于zip数据压缩和解压的问题解决了吗java用 Deflater compresser = new Deflater(); compresser.setInput(input); compresser.finish(); //压缩数据并返回压缩后的长度 int compressedDataLength =compresser....

怎样用java快速实现zip文件的压缩压缩package zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOu...

关于Java的解压缩的代码1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 package com.javatest.techzero.gui; import java...

键盘失灵问题各位好!请教一个键盘失灵的问题朋友有一个使用多年的Award 的BIOS自检响铃及其意义 1短: 系统正常启动。这是我们每天都能听到的,也表明机器没有任何问题。 2短: 常规错误,请进入CMOS Setup,重新设置不正确的选项。 1长1短: RAM或主...