您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
javase第三季学习笔记-IO之字节数组流
发布时间:2017-08-10 15:09:11编辑:雪饮阅读()
ByteArrayInputStream
public class ByteArrayInputStreamextends InputStream
ByteArrayInputStream包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节。
关闭ByteArrayInputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。
ByteArrayOutputStream
public class ByteArrayOutputStream extends OutputStream
此类实现了一个输出流,其中的数据被写入一个byte数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。
关闭ByteArrayOutputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。
示例代码:输入和输出都写一个示例了
package com.vince.bytearray;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayDemo {
//使用ByteArrayOutputStream写操作
public static void write(){
//创建一个字节数组输出流对象
ByteArrayOutputStream baos=new ByteArrayOutputStream();
String info="文死谏,武死战,百无一用是书生,临危一死报君王";
//往缓冲区中输出数据
try {
baos.write(info.getBytes());
baos.write(10);
//转换成字节数组,如果需要将信息传输到网络上,则该数组已经可以传输到网络上了。
baos.toByteArray();
baos.close();//关闭无效,因为baos.toByteArray()已经到内存中了
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
//根据一个字节数组构造一个字节数组输入流
ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
byte[] bytes=new byte[512];
int len=-1;
StringBuilder sb=new StringBuilder();
try {
while((len=bais.read(bytes))!=-1){
sb.append(new String(bytes,0,len));
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(sb);
}
public static void main(String[] args) {
write();
}
}
关键字词:javase,io,字节数组流