?? out = new DataOutputStream(new FileOutputStream(file)); ?? for(char temp : ch){ ?? out.writeChar(temp); ?? }
?? out.close(); ?? } ?? }
A B C
现在我们在上面例子的基础上,使用DataInputStream读出内容
?? import java.io.DataInputStream; ?? import java.io.File;
?? import java.io.FileInputStream; ?? import java.io.IOException; ??
?? public class DataOutputStreamDemo{
?? public static void main(String[] args) throws IOException{ ?? File file = new File(\ ?? DataInputStream FileInputStream(file));
?? char[] ch = new char[10]; ?? int count = 0; ?? char temp;
?? while((temp = input.readChar()) != 'C'){ ?? ch[count++] = temp; ?? }
?? System.out.println(ch); ?? } ?? }
input
=
new
DataInputStream(new
【运行结果】: AB
合并流 SequenceInputStream
SequenceInputStream主要用来将2个流合并在一起,比如将两个txt中的内容合并为另外一个txt。下面给出一个实例:
?? import java.io.File;
?? import java.io.FileInputStream; ?? import java.io.FileOutputStream; ?? import java.io.IOException; ?? import java.io.InputStream; ?? import java.io.OutputStream;
?? import java.io.SequenceInputStream; ?? ?? /**
?? * 将两个文本文件合并为另外一个文本文件 ?? * */
?? public class SequenceInputStreamDemo{
?? public static void main(String[] args) throws IOException{ ?? File file1 = new File(\ ?? File file2 = new File(\?? File file3 = new File(\ ?? InputStream input1 = new FileInputStream(file1); ?? InputStream input2 = new FileInputStream(file2); ?? OutputStream output = new FileOutputStream(file3); ?? // 合并流
?? SequenceInputStream sis = new SequenceInputStream(input1, input2); ?? int temp = 0;
?? while((temp = sis.read()) != -1){ ?? output.write(temp); ?? }
??? input1.close(); ??? input2.close(); ??? output.close(); ??? sis.close(); ??? } ??? }
【运行结果】
结果会在hello.txt文件中包含hello1.txt和hello2.txt文件中的内容。
文件压缩 ZipOutputStream类
先举一个压缩单个文件的例子吧:
??? import java.io.File;
??? import java.io.FileInputStream; ??? import java.io.FileOutputStream; ??? import java.io.IOException; ??? import java.io.InputStream;
??? import java.util.zip.ZipEntry;
??? import java.util.zip.ZipOutputStream; ???
??? public class ZipOutputStreamDemo1{
??? public static void main(String[] args) throws IOException{ ??? File file = new File(\??? File zipFile = new File(\ ??? InputStream input = new FileInputStream(file);
??? ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( ??? zipFile));
??? zipOut.putNextEntry(new ZipEntry(file.getName())); ??? // 设置注释
??? zipOut.setComment(\ ??? int temp = 0;
??? while((temp = input.read()) != -1){ ??? zipOut.write(temp); ??? }
??? input.close(); ??? zipOut.close(); ??? } ??? }
【运行结果】
运行结果之前,我创建了一个hello.txt的文件,原本大小56个字节,但是压缩之后产生hello.zip之后,居然变成了175个字节,有点搞不懂。 不过结果肯定是正确的,我只是提出我的一个疑问而已。
上面的这个例子测试的是压缩单个文件,下面的们来看看如何压缩多个文件。
??? import java.io.File;
??? import java.io.FileInputStream; ??? import java.io.FileOutputStream; ??? import java.io.IOException; ??? import java.io.InputStream; ??? import java.util.zip.ZipEntry;
??? import java.util.zip.ZipOutputStream; ??? ??? /**
??? * 一次性压缩多个文件 ??? * */
??? public class ZipOutputStreamDemo2{
??? public static void main(String[] args) throws IOException{ ??? // 要被压缩的文件夹
??? File file = new File(\
??? File zipFile = new File(\ ??? InputStream input = null;
??? ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream( ??? zipFile));
??? zipOut.setComment(\ ??? if(file.isDirectory()){
??? File[] files = file.listFiles(); ??? for(int i = 0; i < files.length; ++i){ ??? input = new FileInputStream(files[i]);
??? zipOut.putNextEntry(new ZipEntry(file.getName() ??? + File.separator + files[i].getName())); ??? int temp = 0;
??? while((temp = input.read()) != -1){ ??? zipOut.write(temp); ??? }
??? input.close(); ??? } ??? }
??? zipOut.close(); ??? } ??? }
【运行结果】
先看看要被压缩的文件吧:
接下来看看压缩之后的:
大家自然想到,既然能压缩,自然能解压缩,在谈解压缩之前,我们会用到一个ZipFile类,先给一个这个例子吧。java中的每一个压缩文件都是可以使用ZipFile来进行表示的
??? import java.io.File;
??? import java.io.IOException; ??? import java.util.zip.ZipFile; ??? ??? /**
??? * ZipFile演示 ??? * */
??? public class ZipFileDemo{
??? public static void main(String[] args) throws IOException{ ??? File file = new File(\ ??? ZipFile zipFile = new ZipFile(file);
??? System.out.println(\压缩文件的名称为:\ ??? } ??? }
【运行结果】:
压缩文件的名称为:d:\\hello.zip
现在我们呢是时候来看看如何加压缩文件了,和之前一样,先让我们来解压单个压缩文件(也就是压缩文件中只有一个文件的情况),我们采用前面的例子产生的压缩文件hello.zip
??? import java.io.File;
??? import java.io.FileOutputStream; ??? import java.io.IOException; ??? import java.io.InputStream; ??? import java.io.OutputStream; ??? import java.util.zip.ZipEntry; ??? import java.util.zip.ZipFile;