如何使用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;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));}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没有执行close()的意义,原因:底层空实现(源码如下)
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。