千家信息网

如何使用ByteArrayOutputStream实现将数据写入本地文件

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要为大家展示了"如何使用ByteArrayOutputStream实现将数据写入本地文件",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用B
千家信息网最后更新 2025年02月02日如何使用ByteArrayOutputStream实现将数据写入本地文件

这篇文章主要为大家展示了"如何使用ByteArrayOutputStream实现将数据写入本地文件",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用ByteArrayOutputStream实现将数据写入本地文件"这篇文章吧。

ByteArrayOutputStream将数据写入本地文件

在一个项目中做一次性校验部分,需要将校验后数据写入表格后上传。巧的是,服务器Down了。作为一个新手实习生菜鸟,为了测试自己的代码和输出结果有没有毛病,在大神同事的指点下选择了先将表格输出到本地

于是在百度疯狂搜索"输出流"、"输出文件到本地"、"文件流"等,经过多方搜集和探查以及加工,最后加上了一小段代码

//测试-将表格导入本地文件        FileOutputStream fileOutputStream = null;        try {            fileOutputStream = new FileOutputStream("C:\\Users\\Administrator.DESKTOP-SFAEOA8\\Desktop\\consistencyCheckCommodityRuleTemplate.xlsx");            fileOutputStream.write(byteArrayOutputStream.toByteArray());        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }

以下是上传Excel的部分代码。将最后的上传文件到dfs的方法注掉,以在准备好的文件 C:\\Users\\Administrator.DESKTOP-SFAEOA8\\Desktop\\consistencyCheckCommodityRuleTemplate.xlsx 中输出需要的结果

public void uploadExcel() {         //获取校验数据        List consistencyCheck = getConsistencyCheck();         //创建模板信息        DataModel dataModel = setDataModel();        ......(此处省略一万字)         //创建ExcelData        ExcelData excelData = setExcelData();        ......(此处也省略一万字)         //创建日志数据        ConsistencyCheckLog consistencyCheckLog = setConsistencyCheckLog();        ......(此处又省略一万字)         //创建excel        ByteArrayOutputStream  byteArrayOutputStream = createExcel(dataModel, excelData);         //测试-将表格导入本地文件        FileOutputStream fileOutputStream = null;        try {            fileOutputStream = new FileOutputStream("C:\\Users\\Administrator.DESKTOP-SFAEOA8\\Desktop\\consistencyCheckCommodityRuleTemplate.xlsx");            fileOutputStream.write(byteArrayOutputStream.toByteArray());        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }         //上传excel(无法上传 先注掉好了)        //uploadFileToDfs(consistencyCheckLog, byteArrayOutputStream);    }

这样就OK了,只添加了测试的部分,得到数据后也是放下了这颗菜心

那来了解一下ByteArrayOutPutStream吧

  • ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据

  • 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区

  • 成功创建字节数组输出流对象后,可以参见以下列表中的方法,对流进行写操作或其他操作

序号方法描述
1public void reset() 将此字节数组输出流的 count 字段重置为零,从而丢弃输出流中目前已累积的所有数据输出。
2public byte[] toByteArray() 创建一个新分配的字节数组。数组的大小和当前输出流的大小,内容是当前输出流的拷贝。
3public String toString() 将缓冲区的内容转换为字符串,根据平台的默认字符编码将字节转换成字符。
4public void write(int w) 将指定的字节写入此字节数组输出流。
5public void write(byte []b, int off, int len) 将指定字节数组中从偏移量 off 开始的 len 个字节写入此字节数组输出流。
6public void writeTo(OutputStream outSt) 将此字节数组输出流的全部内容写入到指定的输出流参数中。

在表格输出时

Java输出流FileOutputStream也发挥了至关重要的作用

使用FileOutputStream写入文件的过程同使用FileInputStream过程相同,都是先用File类打开本地文件,实例化输入输出流,然后调用流的读写方法读取或写入数据,最后关闭流。

FileOutputStream的写入方法

FileOutputStream类提供了多种文件写入方法,可以单独写一个字节到文件,也可以写一个byte数组到文件,也可以取byte数组的部分数据写入到文件。

把读取的结果写入到ByteArrayOutputStream

  • FileOutputStream 可以把数据写到文件中去

  • ByteArrayOutputStream 可以把其他地方的读入的数据写到这里面,最后获取数据所有的 byte[],相当于可以把数据全部读到内存中来.

 // 把读取的结果写入到ByteByteArrayOutputStream public static void main(String[] args) throws IOException {  // TODO Auto-generated method stub  String s = "C:\\a.txt";  int len = 0;  FileInputStream stream = new FileInputStream(s);  ByteArrayOutputStream stream2 = new ByteArrayOutputStream();  byte[] buffer = new byte[5];  //先读后写,循环读写  while ((len = stream.read(buffer)) != -1) {   stream2.write(buffer, 0, len);  }  byte[] data = stream2.toByteArray();  System.out.println(new String(data)); }

以上是"如何使用ByteArrayOutputStream实现将数据写入本地文件"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

输出 数据 文件 数组 字节 内容 方法 表格 结果 缓冲区 部分 测试 缓冲 代码 字符 实例 篇文章 内存 大小 是在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发项目怎么成本抵扣 欧洲网络安全与战略利益 我的世界服务器服主是真的快乐吗 保亭管理软件开发费用 pg数据库appendonly mysql数据库前端缓存 易语言 数据库操作模块 服务器安装硬盘有什么用 时速连接数据库失败 数据库创建表 教案 hp服务器命令 宁波软件开发群 西安交通大学网络数据库 生物信息学数据库的核心是 福建省网络安全协会 关于网络安全的重大事件 嘉定区自动化软件开发诚信合作 在数据库中查询用友凭证 网络安全实战详解书籍 泉州网络安全平台作业 派出所联合网络安全宣传周活动 南开区企业网络技术质量保证 联通网络技术研究院 网站 许昌中等计算机网络技术专业 合肥超盟网络技术有限公司 IQ数据库转换日期格式 东莞市莞企互联网络科技 全球网互联网科技有限公司 上海信璞网络技术有限公司 黑客软件开发团队官网
0