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

目录
  • ByteArrayOutputStream将数据写入本地文件
    • 那来了解一下ByteArrayOutPutStream吧
    • 在表格输出时
    • FileOutputStream的写入方法
  • 把读取的结果写入到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<DTO> 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型数据
  • 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区
  • 成功创建字节数组输出流对象后,可以参见以下列表中的方法,对流进行写操作或其他操作
序号 方法描述
1 public void reset() 将此字节数组输出流的 count 字段重置为零,从而丢弃输出流中目前已累积的所有数据输出。
2 public byte[] toByteArray() 创建一个新分配的字节数组。数组的大小和当前输出流的大小,内容是当前输出流的拷贝。
3 public String toString() 将缓冲区的内容转换为字符串,根据平台的默认字符编码将字节转换成字符。
4 public void write(int w) 将指定的字节写入此字节数组输出流。
5 public void write(byte []b, int off, int len) 将指定字节数组中从偏移量 off 开始的 len 个字节写入此字节数组输出流。
6 public 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));
 }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • ByteArrayOutputStream简介和使用_动力节点Java学院整理

    ByteArrayOutputStream 介绍 ByteArrayOutputStream 是字节数组输出流.它继承于OutputStream. ByteArrayOutputStream 中的数据被写入一个 byte 数组.缓冲区会随着数据的不断写入而自动增长.可使用 toByteArray() 和 toString() 获取数据. OutputStream 函数列表 我们来看看ByteArrayOutputStream的父类OutputStream的函数接口. // 构造函数 Output

  • 使用ByteArrayOutputStream写入字符串方式

    目录 使用ByteArrayOutputStream写入字符串 文件与二进制数据互转-ByteArrayOutputStream 使用ByteArrayOutputStream写入字符串 package com.gk; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import jav

  • Java使用ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件的方法

    ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据.在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去.具体用法如下: ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组. ByteA

  • Java基础知识之ByteArrayOutputStream流的使用

    目录 Java ByteArrayOutputStream流的使用 一.ByteArrayOutputStream流定义 二.ByteArrayOutputStream流实例域 三.ByteArrayOutputStream流构造函数 四.ByteArrayOutputStream流方法 五.ByteArrayOutputStream流的作用 ByteArrayOutputStream 理解 ByteArrayOutputStream的用法 ByteArrayInputStream的用法 Jav

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

    目录 ByteArrayOutputStream将数据写入本地文件 那来了解一下ByteArrayOutPutStream吧 在表格输出时 FileOutputStream的写入方法 把读取的结果写入到ByteArrayOutputStream ByteArrayOutputStream将数据写入本地文件 在一个项目中做一次性校验部分,需要将校验后数据写入表格后上传.巧的是,服务器Down了.作为一个新手实习生菜鸟,为了测试自己的代码和输出结果有没有毛病,在大神同事的指点下选择了先将表格输出到本

  • python保存数据到本地文件的方法

    1.保存列表为.txt文件 #1/list写入txt ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.21'] fileObject = open('sampleList.txt', 'w') for ip in ipTable: fileObject.write(ip) fileObject.write('\n') fileObject.close() 2.字典保存 #2/dict写入json import json dictObj =

  • 将pandas.dataframe的数据写入到文件中的方法

    导入实验常用的python包.如图2所示. [import pandas as pd]pandas用来做数据处理.[import numpy as np]numpy用来做高维度矩阵运算.[import matplotlib.pyplot as plt]matplotlib用来做数据可视化. pandas数据写入到csv文件中: [names = ['Bob','Jessica','Mary','John','Mel']]创建一个names列表[ births = [968,155,77,578,

  • pandas 把数据写入txt文件每行固定写入一定数量的值方法

    我遇到的情况是:把数据按一定的时间段提出.比如提出每天6:00-8:00的每个数据,可以这样做: # -*-coding: utf-8 -*- import pandas as pd import datetime #读取csv文件 df=pd.read_csv('A_2+20+DoW+VC.csv') #求'ave_time'这一列的平均值 aveTime=df['ave_time'].mean() #把ave_time这列的缺失值进进行填充,填充的方法是按这一列的平均值进行填充 df2=df

  • 教你用python将数据写入Excel文件中

    目录 一.导入excel表格文件处理函数 二.创建excel表格类型文件 三.在excel表格类型文件中建立一张sheet表单 四.自定义列名 五.将列属性元组col写进sheet表单中 六.将数据写进sheet表单中 七.保存excel文件 附:Python读取Excel文件数据 总结 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里的xlwt是python的第三方模块,需要下载安装才能使

  • python数据写入Excel文件中的实现步骤

    目录 一.导入excel表格文件处理函数 二.创建excel表格类型文件 三.在excel表格类型文件中建立一张sheet表单 四.自定义列名 五.将列属性元组col写进sheet表单中 六.将数据写进sheet表单中 七.保存excel文件 总结 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里的xlwt是python的第三方模块,需要下载安装才能使用,不然导入不了(python第三方库的

  • C++文件的数据写入和文件的数据读取的方法实现

    目录 一:没有数据,准备数据,写入文件 二:读文件操作 一:没有数据,准备数据,写入文件 1.main.cpp #include<iostream> using namespace std; #include<fstream> #include<string> #include<list> #include"CData.h" #include"CStaff.h" int main() { CData::userInit

  • Nodejs处理Json文件并将处理后的数据写入新文件中

    目录 处理Json文件并将处理后的数据写入新文件 问题描述 实现过程 用Nodejs解析json数据 处理Json文件并将处理后的数据写入新文件 问题描述 事情是这样的,朋友让我处理一个json文件并将处理后的数据写入新文件.这个json文件的结构如下: [     {         "head_img": "http://wx.qlogo.cn/mmhead/xxxxxxxxxxx",         "nick_name": "x

  • OpenCV中的cv::Mat函数将数据写入txt文件

    在使用opencv进行图像处理的过程中,经常会涉及到将文件中的数据读入到cv::Mat中,或者将cv::Mat中的数据写入到txt文件中. 下面就介绍一种我常用的将cv::Mat中的数据写入到txt文件中的方法,具体见代码: void writeMatToFile(cv::Mat& m, const char* filename) { std::ofstream fout(filename); if (!fout) { std::cout << "File Not Opene

  • python 如何将数据写入本地txt文本文件的实现方法

    一.读写txt文件 1.打开txt文件 file_handle=open('1.txt',mode='w') 上述函数参数有(1.文件名,mode模式) mode模式有以下几种: #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写 a+可读可追加 #wb+写入进制数据 #w模式打开文件,如果而文件中有数据,再次写入内容,会把原来的覆盖掉 2.向文件写入数据 第一种写入方式: # 2.1 write 写入 #\n 换行符 file_handle.write('hell

随机推荐