使用ByteArrayOutputStream写入字符串方式
目录
- 使用ByteArrayOutputStream写入字符串
- 文件与二进制数据互转-ByteArrayOutputStream
使用ByteArrayOutputStream写入字符串
package com.gk; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; /** * 使用ByteArrayOutputStream写入字符串 * @author GuoKe *说明:1,不关联源 2.可以不释放资源 3.使用toByteArray()获取数据 */public class IOTest8 { public static void main(String[] args) {byte[] dest = null; ByteArrayOutputStream bs = null; try {bs = new ByteArrayOutputStream(); String str = "hello"; byte[] datas = str.getBytes(); bs.write(datas,0,datas.length); bs.flush(); dest = bs.toByteArray(); System.out.println(dest.length + ":" + new String(dest,0,dest.length/*bs.size()*/)); }catch(FileNotFoundException e){e.printStackTrace(); }catch(IOException e){e.printStackTrace(); }finally {try {if (bs != null) {//alt+shift+zbs.close(); } } catch (Exception e) {e.printStackTrace(); }} }}
文件与二进制数据互转-ByteArrayOutputStream
// 获取二进制数据public static byte[] getFileBinary(String filePath) {FileInputStream fis = null; BufferedInputStream bis = null; ByteArrayOutputStream baos = null; try {fis = new FileInputStream(filePath); bis = new BufferedInputStream(fis); baos = new ByteArrayOutputStream(); int c = bis.read(); while (c != -1) {// 数据存储到ByteArrayOutputStream中baos.write(c); c = bis.read(); }fis.close(); bis.close(); // 转换成二进制return baos.toByteArray(); } catch (Exception e) {e.printStackTrace(); } finally {// 没有关闭ByteArrayOutputStream流的意义,空实现try {if (fis != null ) {fis.close(); }} catch (IOException e) {e.printStackTrace(); } finally {try {if (bis != null ) {bis.close(); }} catch (IOException e) {e.printStackTrace(); }}}return null; } // 二进制数据转成文件public static void binaryToFile(byte[] bytes, String filePath) {FileOutputStream fos = null; BufferedOutputStream bos = null; try {fos = new FileOutputStream(filePath); bos = new BufferedOutputStream(fos); bos.write(bytes); } catch (Exception e) {e.printStackTrace(); } finally {try {if (fos != null ) {fos.close(); }} catch (IOException e) {e.printStackTrace(); } finally {try {if (bos != null ) {bos.close(); }} catch (IOException e) {e.printStackTrace(); }}}}
【使用ByteArrayOutputStream写入字符串方式】ByteArrayOutputStream没有执行close()的意义,原因:底层空实现(源码如下)
文章图片
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小