JAVA I/O(输入/输出)-3

数据输入/输出流

在这里插入图片描述

package zhao;

import java.io.*;

public class Demo {

	public static void main(String[] args) {
		File f = new File("word.txt");
		FileOutputStream out = null;
		DataOutputStream dos = null;
		try {
			out = new FileOutputStream(f);
			dos = new DataOutputStream(out);// 将文件流包装成数据流

			dos.writeUTF("这是写入字符串数据");// 写入字符串数据
			dos.writeDouble(3.14);// 写入浮点型数据
			dos.writeBoolean(true);// 写入布尔类型数据
			dos.writeInt(123);// 写入整形数据

		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (dos != null) {
				try {
					dos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (out != null) {
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

		DataInputStream di = null;
		FileInputStream in = null;
		try {
			in = new FileInputStream(f);
			di = new DataInputStream(in);
			System.out.println("readUTF()读取数据:" + di.readUTF());
			System.out.println("readDouble()读取数据:" + di.readDouble());
			System.out.println("readBoolean()读取数据:" + di.readBoolean());
			System.out.println("readINT()读取数据:" + di.readInt());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (di != null) {
				try {
					di.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

在这里插入图片描述
结果

readUTF()读取数据:这是写入字符串数据
readDouble()读取数据:3.14
readBoolean()读取数据:true
readINT()读取数据:123

ZIP压缩输入/输出流

在这里插入图片描述
在这里插入图片描述

package zhao;

import java.io.*;
import java.util.zip.*;

public class Demo {
	static void compress() {
		File source = new File("C:\\Users\\zhao\\Documents\\grass\\");// 源文件
		File target = new File("C:\\Users\\zhao\\Documents\\pingan1.wd");// 压缩包

		try (FileOutputStream fis = new FileOutputStream(target);
				ZipOutputStream zos = new ZipOutputStream(fis)) {
			if (source.isDirectory()) {
				for (File f : source.listFiles()) {
					addEntry(zos, "", f);
				}
			} else {
				addEntry(zos, "", source);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/*
	 * @param zos - 压缩流
	 * 
	 * @param base - 文件在压缩包中的位置
	 * 
	 * @param source - 被压缩的文件
	 */
	static void addEntry(ZipOutputStream zos, String base, File source) {
		if (source.isDirectory()) {
			for (File file : source.listFiles()) {
				addEntry(zos, base + source.getName() + file.separator, file);
			}
		} else {
			byte buf[] = new byte[1024];
			try (FileInputStream fis = new FileInputStream(source)) {
				int count = -1;
				// 在压缩包中添加新条目
				zos.putNextEntry(new ZipEntry(base + source.getName()));
				while ((count = fis.read(buf)) != -1) {
					zos.write(buf, 0, count);
					zos.flush();
				}
				zos.closeEntry();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		compress();
	}
}

在这里插入图片描述

package zhao;

import java.io.*;
import java.util.zip.*;

public class Demo {
	static void compress() {
		File source = new File("C:\\Users\\zhao\\Documents\\grass\\");// 源文件
		File target = new File("C:\\Users\\zhao\\Documents\\java.zip");// 压缩包

		try (FileOutputStream fis = new FileOutputStream(target);
				ZipOutputStream zos = new ZipOutputStream(fis)) {
			if (source.isDirectory()) {
				for (File f : source.listFiles()) {
					addEntry(zos, "", f);
				}
			} else {
				addEntry(zos, "", source);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/*
	 * @param zos - 压缩流
	 * 
	 * @param base - 文件在压缩包中的位置
	 * 
	 * @param source - 被压缩的文件
	 */
	static void addEntry(ZipOutputStream zos, String base, File source) {
		if (source.isDirectory()) {
			for (File file : source.listFiles()) {
				addEntry(zos, base + source.getName() + file.separator, file);
			}
		} else {
			byte buf[] = new byte[1024];
			try (FileInputStream fis = new FileInputStream(source)) {
				int count = -1;
				// 在压缩包中添加新条目
				zos.putNextEntry(new ZipEntry(base + source.getName()));
				while ((count = fis.read(buf)) != -1) {
					zos.write(buf, 0, count);
					zos.flush();
				}
				zos.closeEntry();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	static void decompression() {
		File dir = new File("zip\\");
		File source = new File("src\\java.zip");
		byte buf[] = new byte[1024];

		ZipEntry entry = null;
		try (FileInputStream fis = new FileInputStream(source);
				ZipInputStream zis = new ZipInputStream(fis)) {
			while (true) {
				entry = zis.getNextEntry();// 获取一个条目
				if (entry == null) {
					break;
				}
				if (entry.isDirectory()) {
					continue;
				}

				File f = new File(dir, entry.getName());

				if (!f.getParentFile().exists()) {// 如果解压的文件夹不存在
					f.getParentFile().mkdir();// 创建
				}

				int count = -1;
				FileOutputStream fos = new FileOutputStream(f);
				while ((count = zis.read(buf)) != -1) {
					fos.write(buf, 0, count);
					fos.close();
					zis.closeEntry();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
//		compress();
		decompression();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值