使用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+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()的意义,原因:底层空实现(源码如下)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。