对基本数据的读写操作
DataInputStream
DataOutputStream
写基本类型数据
void writeInt(int d): 一次写入4个字节,将int值转化为字节写出
void writeLong(long l):一次写入8个字节,将long值转化为字节写出
void write…
读基本操作
int readInt():一次性读取4个字节,将其转化为对应的int值
double readDouble():一次性读取8个字节,将其转化为对应的double值
高级流可以套高级流可以再套上低级流
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 基于基本数据类型数据读写操作的高级流
* DataInputStream
* DataOutputStream
* @author Administrator
*
*/
public class DataInputAndOutputStream {
public static void main(String[] args) throws IOException {
/**
* 创建用于读写文件的节点流
* fis fos
*/
FileOutputStream fos=new FileOutputStream("data.dat");
BufferedOutputStream bos=new BufferedOutputStream(fos);
DataOutputStream dos=new DataOutputStream(bos);
/**
* 通过高级流写基本类型数据
*/
//写入一个int最大值
dos.writeInt(Integer.MAX_VALUE);
//使用UTF-8编码写出一个字符串
dos.writeUTF("你好啊!");
//写出一个double值
dos.writeDouble(2.5);
/**
* 写出原理
* 高级流dos会将这些数据转化为相应的字节.
* 然后通过它处理的低级流fos将这些字节写到文件
*/
/**
* jdk中的流都有一个特点
* 高级流的close方法中,会将其处理的流关闭后再将自身关闭
* 所以,我们只需关闭最外层的高级流即可.
*/
//dos不必flush 但是这样做没有危害,比较保险
dos.flush();
dos.close();
FileInputStream fis=new FileInputStream("data.dat");
BufferedInputStream bis=new BufferedInputStream(fis);
DataInputStream dis=new DataInputStream(bis);
//读取一个int值
/**
* dis会通过fis从文件中连续读取4个字节,然后再将这四个字节组成int值返回.
*/
int num=dis.readInt();
String str=dis.readUTF();
double d=dis.readDouble();
System.out.println(num+","+str+","+d);//2147483647,你好啊!,2.5
dis.close();
}
}
DataInputStream可以配合BufferedInputStream 和FileInputStream来提高效率
DataOutputStream也是如此