Java中DAX读取文件 java怎么读取dat文件_filereader读取文件


Java文件处理类都在http://java.io包中,处理类分成:节点类、包装类(转化类、装饰类)。

字节:byte,8bit,最基础的存储单位。(1Byte=8个0/1位,即0000 0000 至 1111 1111)

字符:“a”, “10000”, “我”。( 分别是1,5,1个字符,1个字符可能由多个字节来存储)

数据类型:3, 5.25, abcde(字符串)

文件是以字节保存,因此程序将变量保存到文件需要转化

1. 节点类:直接操作文件类

  • 1) InputStream, OutputStream(写字节)

读写字节:

InputStream:数据从文件读取到Java

OutputStream:数据从Java输出到文件里

-> FileInputStream, FileOutputStream

  • 2) Reader, Writer(字符)

读写字符:

-> FileReader, FileWriter

  • note:字节类以Stream为结尾,字符类以er为结尾

2. 转换类:字符到字节之间的转化

  • InputStreamReader: 文件读取时字节,转化为Java能理解的字符
  • OutputStreamWriter: Java将字符转化为字节输入到文件中

3. 装饰类:装饰节点类

  • 1) DataInputStream, DataOutputStream: 封装数据流。

-> 例如:可以输出一个double,自动转化为8个字节。

  • 2) BufferedInputStream, BufferedOutputStream: 缓存字节流。开一个缓冲区,提升读和写的访问速度。

-> BufferedInputStream:提供缓冲输入流功能。缓冲输入流相对于普通输入流的优势是,它提供了一个缓冲数组,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中,最后再将缓冲区中的内容部分或全部返回给用户。从缓冲区里读取数据远比直接从物理数据源(譬如文件)读取速度快。

-> BufferedOutputStream:带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里。等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多。close之前调用flush刷新此缓冲的输出流,迫使所有缓冲的输出字节被写出到底层输出流中。

(截止到2018年,DDR3内存读写速度在几十GB/s,而SSD硬盘的读写速度在500MB-1GB/s。所以,当程序需要保存数据到文件中,通常会在内存里面开辟一个缓冲区。CPU指挥先把数据快速写入到内存缓存区中,然后内存缓存区再转移到硬盘上。CPU不用等待在较慢的操作上,而是去做其他的计算,这样可以提高CPU使用效率)

  • 3) BufferedReader, BufferedWriter: 缓存字符流


Java中DAX读取文件 java怎么读取dat文件_Java中DAX读取文件_02