使用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;

/**

* 使用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();

}

}

}

}

文件与二进制数据互转-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()的意义,原因:底层空实现(源码如下)

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

以上是 使用ByteArrayOutputStream写入字符串方式 的全部内容, 来源链接: www.h5w3.com/251415.html

回到顶部