数据流:
DataInputStream(数据输入流) ;DataOutputStream(数据输出流)
小实例:
import java.io.*;
public class DataStreamTest {
public static void main(String[] args){
try{
String name[] = {"Tom","Jack","Mary"};//定义字符串name数组
double salary[] = {250,265.7,300.6};//定义double型数组
FileOutputStream fos = new FileOutputStream("name/salary");将name和salary写入文件输出流中
DataOutputStream dos = new DataOutputStream(fos);//文件输出流写入数据流中
for(int i=0;i<name.length;i++){
dos.writeUTF(name[i]);
dos.writeDouble(salary[i]);
} name和salary一一对应
fos.close();
dos.close();
//
FileInputStream fis = new FileInputStream("name/salary");
DataInputStream dis = new DataInputStream(fis);
///读出数据
for(int i=0;i<name.length;i++){
System.out.println(dis.readUTF() + ":" +dis.readDouble());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
缓冲流:
缓冲流(BufferedStream),即为每一个缓冲流提供一块缓冲区,一个缓冲区就是专门用于传送数据的一个内存。
当向一个缓冲流写入数据时,系统会将数据先存放在一个缓冲区中,当这个缓冲区存满以后会将这些数据全部发送给相应的设备;同样的,当从一个缓冲流中提取数据时,系统会先从缓冲区中读取数据,当缓冲区为空时,会自动从相应设备中读取数据存放在缓冲区中。由此可见,缓冲流和缓冲区的提出提高了数据的传输效率。
flush():无论缓冲区是否已存满,将缓冲区中的数据强制输出;
小实例:
import java.io.*;//导包
public class BufferedStreamTest {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("name/bufferFile");
BufferedOutputStream bos = new BufferedOutputStream(fos);//创建一个缓冲流对象
DataOutputStream dos = new DataOutputStream(bos);
dos.writeUTF("Hello world!");
dos.writeBoolean(false);
dos.writeInt(125);
dos.close();
bos.close();
fos.close();
FileInputStream fis = new FileInputStream("name/bufferFile");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
System.out.println(dis.readUTF()+"\n"+dis.readBoolean()+"\n"+dis.readInt());
dis.close();
bis.close();
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}