欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用ByteArrayOutputStream實(shí)現(xiàn)將數(shù)據(jù)寫入本地文件

 更新時(shí)間:2021年12月10日 12:01:03   作者:Debug卷心菜  
這篇文章主要介紹了使用ByteArrayOutputStream實(shí)現(xiàn)將數(shù)據(jù)寫入本地文件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

ByteArrayOutputStream將數(shù)據(jù)寫入本地文件

在一個(gè)項(xiàng)目中做一次性校驗(yàn)部分,需要將校驗(yàn)后數(shù)據(jù)寫入表格后上傳。巧的是,服務(wù)器Down了。作為一個(gè)新手實(shí)習(xí)生菜鳥,為了測試自己的代碼和輸出結(jié)果有沒有毛病,在大神同事的指點(diǎn)下選擇了先將表格輸出到本地

于是在百度瘋狂搜索“輸出流”、“輸出文件到本地”、“文件流”等,經(jīng)過多方搜集和探查以及加工,最后加上了一小段代碼

//測試-將表格導(dǎo)入本地文件
        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的方法注掉,以在準(zhǔn)備好的文件 C:\\Users\\Administrator.DESKTOP-SFAEOA8\\Desktop\\consistencyCheckCommodityRuleTemplate.xlsx 中輸出需要的結(jié)果

public void uploadExcel() {
 
        //獲取校驗(yàn)數(shù)據(jù)
        List<DTO> consistencyCheck = getConsistencyCheck();
 
        //創(chuàng)建模板信息
        DataModel dataModel = setDataModel();
        ......(此處省略一萬字)
 
        //創(chuàng)建ExcelData
        ExcelData excelData = setExcelData();
        ......(此處也省略一萬字)
 
        //創(chuàng)建日志數(shù)據(jù)
        ConsistencyCheckLog consistencyCheckLog = setConsistencyCheckLog();
        ......(此處又省略一萬字)
 
        //創(chuàng)建excel
        ByteArrayOutputStream  byteArrayOutputStream = createExcel(dataModel, excelData);
 
        //測試-將表格導(dǎo)入本地文件
        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了,只添加了測試的部分,得到數(shù)據(jù)后也是放下了這顆菜心

那來了解一下ByteArrayOutPutStream吧

  • ByteArrayOutputStream類是在創(chuàng)建它的實(shí)例時(shí),程序內(nèi)部創(chuàng)建一個(gè)byte型別數(shù)組的緩沖區(qū),然后利ByteArrayOutputStream和ByteArrayInputStream的實(shí)例向數(shù)組中寫入或讀出byte型數(shù)據(jù)
  • 字節(jié)數(shù)組輸出流在內(nèi)存中創(chuàng)建一個(gè)字節(jié)數(shù)組緩沖區(qū),所有發(fā)送到輸出流的數(shù)據(jù)保存在該字節(jié)數(shù)組緩沖區(qū)
  • 成功創(chuàng)建字節(jié)數(shù)組輸出流對象后,可以參見以下列表中的方法,對流進(jìn)行寫操作或其他操作
序號 方法描述
1 public void reset() 將此字節(jié)數(shù)組輸出流的 count 字段重置為零,從而丟棄輸出流中目前已累積的所有數(shù)據(jù)輸出。
2 public byte[] toByteArray() 創(chuàng)建一個(gè)新分配的字節(jié)數(shù)組。數(shù)組的大小和當(dāng)前輸出流的大小,內(nèi)容是當(dāng)前輸出流的拷貝。
3 public String toString() 將緩沖區(qū)的內(nèi)容轉(zhuǎn)換為字符串,根據(jù)平臺的默認(rèn)字符編碼將字節(jié)轉(zhuǎn)換成字符。
4 public void write(int w) 將指定的字節(jié)寫入此字節(jié)數(shù)組輸出流。
5 public void write(byte []b, int off, int len) 將指定字節(jié)數(shù)組中從偏移量 off 開始的 len 個(gè)字節(jié)寫入此字節(jié)數(shù)組輸出流。
6 public void writeTo(OutputStream outSt) 將此字節(jié)數(shù)組輸出流的全部內(nèi)容寫入到指定的輸出流參數(shù)中。

在表格輸出時(shí)

Java輸出流FileOutputStream也發(fā)揮了至關(guān)重要的作用

使用FileOutputStream寫入文件的過程同使用FileInputStream過程相同,都是先用File類打開本地文件,實(shí)例化輸入輸出流,然后調(diào)用流的讀寫方法讀取或?qū)懭霐?shù)據(jù),最后關(guān)閉流。

FileOutputStream的寫入方法

FileOutputStream類提供了多種文件寫入方法,可以單獨(dú)寫一個(gè)字節(jié)到文件,也可以寫一個(gè)byte數(shù)組到文件,也可以取byte數(shù)組的部分?jǐn)?shù)據(jù)寫入到文件。

把讀取的結(jié)果寫入到ByteArrayOutputStream

  • FileOutputStream 可以把數(shù)據(jù)寫到文件中去
  • ByteArrayOutputStream 可以把其他地方的讀入的數(shù)據(jù)寫到這里面,最后獲取數(shù)據(jù)所有的 byte[],相當(dāng)于可以把數(shù)據(jù)全部讀到內(nèi)存中來.
 // 把讀取的結(jié)果寫入到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];
  //先讀后寫,循環(huán)讀寫
  while ((len = stream.read(buffer)) != -1) {
   stream2.write(buffer, 0, len);
  }
  byte[] data = stream2.toByteArray();
  System.out.println(new String(data));
 }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析

    Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java 圖片復(fù)制功能實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java使用swing繪制國際象棋棋盤

    java使用swing繪制國際象棋棋盤

    這篇文章主要為大家詳細(xì)介紹了java使用swing繪制國際象棋棋盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 解決mybatis?update并非所有字段需要更新問題

    解決mybatis?update并非所有字段需要更新問題

    這篇文章主要介紹了解決mybatis?update并非所有字段需要更新問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中synchronized關(guān)鍵字的使用和原理詳解

    Java中synchronized關(guān)鍵字的使用和原理詳解

    這篇文章主要介紹了Java中synchronized關(guān)鍵字的使用和原理詳解,JVM 是通過進(jìn)入、退出 對象監(jiān)視器(Monitor)來實(shí)現(xiàn)對方法、同步塊的同步的,而對象監(jiān)視器的本質(zhì)依賴于底層操作系統(tǒng)的互斥鎖實(shí)現(xiàn),需要的朋友可以參考下
    2023-09-09
  • java多線程模擬搶紅包功能

    java多線程模擬搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了java多線程模擬搶紅包功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • java實(shí)現(xiàn)http的Post、Get、代理訪問請求

    java實(shí)現(xiàn)http的Post、Get、代理訪問請求

    這篇文章主要為大家提供了java實(shí)現(xiàn)http的Post、Get、代理訪問請求的相關(guān)代碼,感興趣的小伙伴們可以參考一下
    2016-01-01
  • springboot自動(dòng)裝配原理初識

    springboot自動(dòng)裝配原理初識

    這篇文章主要介紹了springboot自動(dòng)裝配原理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用springboot,感興趣的朋友可以了解下
    2021-04-04
  • 解決@RequestBody部分屬性丟失的問題

    解決@RequestBody部分屬性丟失的問題

    這篇文章主要介紹了解決@RequestBody部分屬性丟失的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java SpringSecurity+JWT實(shí)現(xiàn)登錄認(rèn)證

    Java SpringSecurity+JWT實(shí)現(xiàn)登錄認(rèn)證

    這篇文章主要介紹了Java SpringSecurity+JWT實(shí)現(xiàn)登錄認(rèn)證,首先通過給需要登錄認(rèn)證的模塊添加mall-security依賴展開介紹,感興趣的朋友可以參考一下
    2022-06-06
  • Spring線程池ThreadPoolTaskExecutor配置詳情

    Spring線程池ThreadPoolTaskExecutor配置詳情

    本篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor配置詳情,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評論