5hutool实战 IoUtil 流操作工具类(将内容写到流中)_ioutil

|
| byte[] content |
content 写入的内容
|

返回值:
参考案例:
		File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/writeTest1.txt") ;
		OutputStream outputStream = null;
		try {
			outputStream = new FileOutputStream(dest);
			boolean isCloseOut = false;
			String str = "1hello 小虚竹\n2hello 小虚竹";
			byte[] sb = str.getBytes();
			//覆盖,不是追加
			IoUtil.write(outputStream,isCloseOut,sb);
		}catch (IOException e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
			IoUtil.close(outputStream);
		}

在这里插入图片描述

源码解析:
链接:待补充

方法明细

方法名称:cn.hutool.core.io.IoUtil.writeUtf8(java.io.OutputStream, boolean, java.lang.Object[])
方法描述

将多部分内容写到流中,自动转换为UTF-8字符串

支持版本及以上

3.1.1

参数描述:
参数名描述
OutputStream out
out 输出流
boolean isCloseOut
isCloseOut 写入完毕是否关闭输出流
java.lang.Object[] contents
contents 写入的内容,调用toString()方法,不包括不会自动换行
返回值:
参考案例:
	File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/writeTest2.txt") ;
		OutputStream outputStream = null;
		try {
			outputStream = new FileOutputStream(dest);
			boolean isCloseOut = false;
			String str = "1hello 小虚竹\n2hello 小虚竹";
			//覆盖,不是追加
			IoUtil.writeUtf8(outputStream,isCloseOut,str);
		}catch (IOException e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
			IoUtil.close(outputStream);
		}

在这里插入图片描述

源码解析:
链接:待补充

方法明细

方法名称:cn.hutool.core.io.IoUtil.write(java.io.OutputStream, java.lang.String, boolean, java.lang.Object[])
方法描述

将多部分内容写到流中,自动转换为字符串

支持版本及以上
参数描述:
参数名描述
OutputStream out
out 输出流
String charsetName
charsetName 写出的内容的字符集
boolean isCloseOut
isCloseOut 写入完毕是否关闭输出流
java.lang.Object[] contents
contents 写入的内容,调用toString()方法,不包括不会自动换行
返回值:
参考案例:
		File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/writeTest3.txt") ;
		OutputStream outputStream = null;
		try {
			outputStream = new FileOutputStream(dest);
			boolean isCloseOut = false;
			String str = "1hello 小虚竹\n2hello 小虚竹";
			//覆盖,不是追加
			IoUtil.write(outputStream,"UTF-8",isCloseOut,str,str,str);
		}catch (IOException e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
			IoUtil.close(outputStream);
		}

在这里插入图片描述

源码解析:
链接:待补充

方法明细

方法名称:cn.hutool.core.io.IoUtil.write(java.io.OutputStream, java.nio.charset.Charset, boolean, java.lang.Object[])
方法描述

将多部分内容写到流中,自动转换为字符串

支持版本及以上

3.0.9

参数描述:
参数名描述
OutputStream out
out 输出流
Charset charset
charset 写出的内容的字符集
boolean isCloseOut
isCloseOut 写入完毕是否关闭输出流
java.lang.Object[] contents
contents 写入的内容,调用toString()方法,不包括不会自动换行
返回值:
参考案例:
		File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/writeTest3.txt") ;
		OutputStream outputStream = null;
		try {
			outputStream = new FileOutputStream(dest);
			boolean isCloseOut = false;
			String str = "1hello 小虚竹\n2hello 小虚竹";
			//覆盖,不是追加
			IoUtil.write(outputStream,CharsetUtil.UTF_8,isCloseOut,str,str,str);
		}catch (IOException e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
			IoUtil.close(outputStream);
		}

源码解析:
链接:待补充

方法明细

方法名称:cn.hutool.core.io.IoUtil.writeObj(java.io.OutputStream, boolean, java.io.Serializable)
方法描述

将多部分内容写到流中

支持版本及以上

5.3.3

参数描述:
参数名描述
OutputStream out
out 输出流
boolean isCloseOut
isCloseOut 写入完毕是否关闭输出流
Serializable obj
obj 写入的对象内容
返回值:
参考案例:
public class StudentDto implements Serializable {

	private static final long serialVersionUID = -3259523582894021714L;
	private String name;
	private Integer age;
	private String sNo;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getsNo() {
		return sNo;
	}

	public void setsNo(String sNo) {
		this.sNo = sNo;
	}

	@Override
	public String toString() {
		return "StudentDto{" +
				"name='" + name + '\'' +
				", age=" + age +
				", sNo='" + sNo + '\'' +
				'}';
	}
}
-------------------------------------------
		
		try {
			boolean isCloseOut = false;
			StudentDto student = new StudentDto();
			student.setName("小虚竹");
			student.setAge(18);
			student.setsNo("nb9527");
			final FastByteArrayOutputStream byteOut = new FastByteArrayOutputStream();
			IoUtil.writeObj(byteOut,isCloseOut,student);
			byte[] bytes = byteOut.toByteArray();
			ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
			//从流中读取对象,即对象的反序列化
			StudentDto studentDto = IoUtil.readObj(byteArrayInputStream);
			System.out.println(studentDto.toString());
		}catch (Exception e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
		}

在这里插入图片描述

源码解析:
链接:待补充

方法明细

方法名称:cn.hutool.core.io.IoUtil.writeObjects(java.io.OutputStream, boolean, java.io.Serializable[])
方法描述

将多部分内容写到流中

支持版本及以上
参数描述:
参数名描述
OutputStream out
out 输出流
boolean isCloseOut
isCloseOut 写入完毕是否关闭输出流
java.io.Serializable[] contents
contents 写入的内容
返回值:
参考案例:
		File dest = new File("C:\\Users\\Administrator\\Desktop\\xuzhu/writeTest6.txt") ;
		OutputStream outputStream = null;
		ObjectInputStream inputStream = null;
		FileInputStream fis = null;
		try {
			boolean isCloseOut = false;
			StudentDto student = new StudentDto();
			student.setName("小虚竹");
			student.setAge(18);
			student.setsNo("nb9527");
			StudentDto student1 = new StudentDto();
			student1.setName("张三");
			student1.setAge(18);
			student1.setsNo("nb007");
			 outputStream = new ObjectOutputStream(new FileOutputStream(dest));
			IoUtil.writeObjects(outputStream,isCloseOut,student,student1);
			IoUtil.close(outputStream);

			//创建序列化流对象
			fis = new FileInputStream(dest);
			inputStream = new ObjectInputStream(fis);
			//读取
			Object obj =null;
			//用available判断是否达到了文件末尾
			while(fis.available()>0) {
				obj=inputStream.readObject();
				System.out.println(obj);
			}
		}catch (Exception e) {
			//抛出一个运行时异常(直接停止掉程序)
			throw new RuntimeException("运行时异常",e);
		} finally {
			IoUtil.close(outputStream);
			IoUtil.close(inputStream);
			IoUtil.close(fis);
		}

在这里插入图片描述

源码解析:
### Hutool 库中的压缩功能实战教程 Hutool 是一款非常实用的 Java 工具包,提供了丰富的 API 来简化日常开发工作。其中,压缩模块能够帮助开发者轻松实现文件和的压缩解压操作。 #### 创建 Zip 文件并添加多个文件 下面是一个简单的例子来展示如何使用 Hutool 的 `ZipUtil` 类创建一个 ZIP 归档文件,并向其添加多个源文件: ```java import cn.hutool.core.io.FileUtil; import cn.hutool.extra.compress.CompressUtil; public class CompressExample { public void createZipFile() { List<File> filesToAdd = Arrays.asList( FileUtil.file("/path/to/file1.txt"), FileUtil.file("/path/to/file2.jpg") ); // 将指定路径下的所有文件打包成 zip 文件 CompressUtil.zip(filesToAdd, "/output/path/archive.zip"); } } ``` 这段代码展示了怎样通过给定的一系列文件对象列表以及目标输出位置来构建一个新的 ZIP 存档[^3]。 #### 解压现有 Zip 文件至特定目录 如果需要从现有的 ZIP 文件中提取内容,则可以利用同样的 `CompressUtil.unzip()` 方法完成此任务: ```java import java.io.File; import cn.hutool.core.io.FileUtil; import cn.hutool.extra.compress.CompressUtil; public class DecompressExample { public void extractZipContents() { File sourceArchive = FileUtil.file("/input/path/example.zip"); // 提取整个ZIP档案的内容到指定的目标文件夹内 CompressUtil.unzip(sourceArchive, "/destination/folder/"); } } ``` 上述方法会遍历所提供的 ZIP 档案并将内部项目释放到所定义的目的地文件夹里。 #### 处理 GZIP 除了处理标准的 ZIP 格式外,Hutool 还支持其他类型的压缩算法如 GZIP。这里有一个简单的方法用于读写 GZIP 数据的例子: ```java import cn.hutool.core.io.IoUtil; import cn.hutool.extra.compress.ZipStreamUtil; public class GzipStreamHandler { public byte[] compressToGzip(byte[] inputBytes) throws IOException { try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { IoUtil.copy(ZipStreamUtil.gzip(inputBytes), baos); return baos.toByteArray(); } } public byte[] decompressFromGzip(byte[] compressedData) throws IOException { try (ByteArrayInputStream bais = new ByteArrayInputStream(compressedData)) { return IoUtil.readBytes(ZipStreamUtil.ungzip(bais)); } } } ``` 这些函数允许应用程序以编程方式对字节数组执行 GZIP 压缩/解压缩转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值