如何使用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()的意义,原因:底层空实现(源码如下)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注天达云行业资讯频道,感谢您对天达云的支持。