通过之前的学习我们知道文件的读写可用FileInputStream 和 FileOutputStream.然而它们只能一连串地读或写字节型数据。 如果我们可以定长地读取或写入数据自然会方便很多。
因此本篇博客介绍 DataOutputStream 与 DataInputStream 类。可以写入或读取定长数据(int,double,boolean等)
FileOutputStream fos = new FileOutputStream("d:/aaa/class2.txt");
DataOutputStream dos = new DataOutputStream(fos); //DataOutputStream 可写入定长数据。如int long double
dos.writeChar('a');
dos.writeInt(12);
dos.writeLong(13l);
dos.writeBoolean(true);
dos.close();
FileInputStream fis = new FileInputStream("d:/aaa/class2.txt");
DataInputStream dis = new DataInputStream(fis);
char c = dis.readChar();
int i = dis.readInt();
long l = dis.readLong();
boolean b = dis.readBoolean();
System.out.println(c);
System.out.println(i);
System.out.println(l);
System.out.println(b);
dis.close();
fis.close();
其中, DataInputStream dis = new DataInputStream(fis); 体现的是一种装饰模式。 可以想象是当我们用笔写字时,真正发挥作用的是笔的笔芯,但为了书写方便我们往往要套上一个笔套。 所以DataInputStream 就相当于笔套,FileinputStream就相当于真正发挥作用的笔芯。
若我们希望不从第一个位置开始读取,想定点到从某一位置开始读取的话,可使用RandomAccessFile 类
RandomAccessFile raf = new RandomAccessFile("d:/aaa/class2.txt", "r" ); //“r”代表只读模式
raf.seek(2); // 定位到一个位置
int i = raf.readInt();
System.out.println(i);
通常我们会复用一些cmake指令(比如将某些指令封装为函数),将其写到某一个.cmake文件中,然后在我们的CMakeLists.txt使用include命令把.cmake文件包含进来使用里面的函数等。
本例子目录结构:
├── build
├── cmake
│ └── test.cmake
└── CMakeLists.txt
test.cmake文件内容增加一个打印字符串的函数:
function(print_string str)
message("str=${str}")..
这个是JDK上的截图,我们可以看到它的父类是Object,没有继承字节流、字符流家族中任何一个类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。
二、存在的意义
1、是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容。
2、由于可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,R...
javaIO RandomAccessFile类随机读写
高效的RandomAccessFile
RandomAccessFile创建文件java.io.FileNotFoundExc...
一、缓冲流
在读写数据时,让数据在缓冲区能减少系统实际对原始数据来源的存取次数,因为一次能做多个数据单位的操作。相较而言,对于直接从文件读取数据或将数据写入文件,比起缓冲区的读写要慢多了。所以使用缓冲区的流,一般都会比没有缓冲区的流效率更高。拥有缓冲区的流被称为缓冲流,包括BufferedInputStream、BufferedOutputStream类和BufferedReader、Buffer...
字节流(InputStream&OutputStream) & 字符类 & RandomAccessFile & 对象序列化 & 线程创建与启动 & 守护线程 线程中断
目录:字节流(InputStream&OutputStream)&字符类&RandomAccessFile&对象序列化& 线程创建与启动&守护线程 线程中断
字节流(InputStream&OutputStream)
InputStrea
文件输入流 FileInputStream这是一个简单的FileInputStream示例:InputStream input = new FileInputStream("D:\\input.txt");int data = input.read();while(data != -1) {//do something with data...doSomethingWithData(data);d...
序列化机制允许将对象转换成字节序列,保存在磁盘上,或者通过网络传输,以备重新恢复成对象。序列化机制可以使对象脱离程序运行独立存在。序列化是指把对象通过流存储到文件中。,反序列化就是从IO流恢复成对象。
使用对象流实现序列化的时候需要重写Serializable 接口才能被序列化。
private static void readData() throws IOException {
ObjectInputStream in = new ObjectInputStream(ne
RandomAccessFile是Java输入/输出体系中功能最丰富的文件内容访问类,它提供了众多的方法来访问文件内容,它既可以读取文件内容,也可以向文件输出数据。与普通输入/输出流不同的是,RandomAccessFile支持"随机访问"的方式,程序可以调到程序的任意地方来读写数据。RandomAccessFile也有一个局限,就是它只能读写文件,不能读写其他IO节点。
文章目录一、缓冲字节流二、缓冲字符流三、转换流四、标准输入输出流、打印流和数据流五、对象流5.1序列化5.1.1序列化Serializable接口的serialVersionUID六、随机存取流--RandomAccessFile 类
一、缓冲字节流
缓冲流是基于内存的io,而文件流是基于硬盘的io,所有缓存流比较快,大概比文件流快75000多倍。
缓冲的字节输入流使用BufferInputS...
RandomAccessFile、FileInputStream和FileOutputStream的区别 1、RandomAccessFile (1)是基于指针形式读写文件数据的,比较灵活。 (2)有两种创建模式:只读模式和读写模式 。 (3)RandomAccessFile不属于InputStream和OutputStream类。 (4)RandomAccessF...
文件输入流 FileInputStream
这是一个简单的FileInputStream示例:
InputStream input = new FileInputStream("D:\\input.txt");
int data = input.read();
while(data != -1) {
//do something w...