您好,登錄后才能下訂單哦!
如何使用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+z bs.close(); } } catch (Exception e) { e.printStackTrace(); } } } }
// 獲取二進制數據 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沒有執行close()的意義,原因:底層空實現(源碼如下)
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。