DataInputStream和DataOututStream

为什么要使用数据流?

问题:怎样将一个long类型的随机数(比如有100个数字)放到文件中?

解决方案:可以将它转化成为字符串,然后将该字符串转化成为字节数组,然后就可以将这个字节数组写进去了。这确实可以。可是很费力气,因为你要把这个long类型的数(例如:12345678963214)进行转换成为String,然后转成字节数组,这样的话,内存里面的空间就占据了很多。而实际上一个long类型的字节占8个字节。最简单的方法就是将这个数直接写到文件当中。因此数据流就闪亮登场了。

 

public class DataOutputStream extends FilterOutputStream implements DataOutput

 

DataOutputStream的使用方法

 

代码
import java.io.*;

public class StreamTest {
public static void main(String[] args) throws IOException {

String path
= System.getProperty("user.dir") + File.separator + "temp.txt";

File file
= new File(path);


OutputStream os
= new FileOutputStream(file);

OutputStream bufferedOutputStream
= new BufferedOutputStream(os);

DataOutputStream dos
= new DataOutputStream(bufferedOutputStream);

byte b = 1;
int i = 2;
char c = 'c';
float f = 2.2f;
boolean bool = true;
String s
= "Hello World!!!";

dos.writeByte(b);
dos.writeInt(i);
dos.writeChar(c);
dos.writeFloat(f);
dos.writeBoolean(bool);
dos.writeUTF(s);

dos.close();


InputStream is
= new FileInputStream(file);

InputStream bufferedInputStream
= new BufferedInputStream(is);

DataInputStream dis
= new DataInputStream(bufferedInputStream);

System.out.println(dis.readByte());
// 注意读入数据的顺序要和写入数据的顺序相同
System.out.println(dis.readInt());
System.out.println(dis.readChar());
System.out.println(dis.readFloat());
System.out.println(dis.readBoolean());
System.out.println(dis.readUTF());

dis.close();
}
}

1
2
c
2.2
true
Hello World!!!

 

 

注意:读的顺序要和写的顺序一样。

  

posted @ 2010-12-23 21:14  meng72ndsc  阅读(980)  评论(1编辑  收藏  举报