您的位置:首页 > 其它

(93)DataStream(操作基本数据类型)、ByteArrayStream(操作字节数组)

2017-07-26 10:05 597 查看
一、DataInputStream、DataOutputStream可以用于操作基本数据类型数据的流对象

//写入
DataOutputStream dos=new DataOutputStream(new FileOutputStream("E:\\a.txt"));

dos.writeInt(235);
dos.writeBoolean(true);
dos.writeDouble(9887.543);
dos.close();
//读出
DataInputStream dis=new DataInputStream(new FileInputStream("E:\\a.txt"));
int i=dis.readInt();
boolean b=dis.readBoolean();
double d=dis.readDouble();
System.out.println("i="+i);
System.out.println("b="+b);
System.out.println("d="+d);
dis.close();

//操作基本数据类型就用DataStream,若用普通的字节流,那么操作非常麻烦,以读举例:首先需要数组缓冲区,然后读出的字符串,再将字符串转换为整数类型,这些操作,在DataInputStream的readalnt方法中已经封装在函数体内实现了,无论是读还是写都很方便!!!


public final void writeUTF(String str)throws IOException以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。

public final String readUTF() throws IOException

//写
DataOutputStream dos=new DataOutputStream(new FileOutputStream("E:\\utfdata.txt"));
dos.writeUTF("你好");
dos.close();
//读
DataInputStream dis=new DataInputStream(new FileInputStream("E:\\utfdata.txt"));
String str=dis.
4000
readUTF();
System.out.println(str);
//注意用DataOutputStream写的文件,必须用 DataInputStream来读。


//利用转换流写文件(字符-->字节)
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("E:\\a.txt"),"UTF-8");
osw.write("你好");
osw.close();


* 二、ByteArrayInputStream、ByteArrayOutputStream操作字节数组*

ByteArrayInputStream:在构造的时候,需要接收数据源,而且数据源是一个字节数组。

ByteArrayOutputStream:在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组,这就是数据目的地。

因为这两个流对象都是操作的数组,并没有使用系统资源,所以不需要.close()关闭。

在流操作规律的讲解时:

源设备:键盘(System.in)、硬盘FileStream、内存ArrayStream

目的设备:控制台(System.out)、硬盘FileStream、内存ArrayStream

需要注意的是它和其他的Stream不同,要先写源ByteArrayInputStream(即先有数组),再通过流的写入方法,将源数据写入ByteArrayOutputStream中。这和自己手动建立byte[]数组的好处是:①ByteStream封装好可以直接用,比如判断(by=bis.read())!=-1,不用自己手动写长度=-1②对数组的操作:获取和设置,反映到IO就是读和写,利用流的思想来操作数组。在流中已经方便了读写,所以操作简单,而且高效

//数据源
bis=new ByteArrayInputStream("ABCDE".getBytes());

//数据目的
ByteArrayOutputStream bos=new ByteArrayOutputStream();

int by=0;
while((by=bis.read())!=-1) {
bos.write(by);
}
System.out.println(bos.size());
System.out.println(bos.toString());

//将数组写入文件
bos.writeTo(new FileOutputStream("E:\\A.txt"));


public void writeTo(OutputStream out) throws IOException将此 byte 数组输出流的全部内容写入到指定的输出流参数中。

理解了这个原理,CharArrayReader 和 CharArrayWriter(操作字符数组) StringReader和StringWriter都是以上的原理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: