java常用文件处理方法。
File
|
|
字节流
主要学两个类:FileInputStream和FileOutputStream
|
|
|
|
字符流
不同于字节流:
例如要写入整数10到文件中,字节流会把数字10的ASCII码写进去,而字符流是以字符1和0写入。
主要学两个类:FileReader和FileWriter
|
|
|
|
缓冲流
BufferedReader类:创建对象时,不能直接用File对象做参数,得用Reader。
可以这样做,先用文件名创建出一个FileReader,再把FileReader作为参数传给BufferedReader。
|
|
如果用System.in从控制台读入数据,由于读入的是字节流,而BufferedReader只接受字符流,怎么办呢?
可以用InputStreamReader,将字节流转换为字符流,再传给BufferedReader。
|
|
BufferedWriter类和BufferedReader类一样,都不能直接用File对象做参数,所以要先建一个FileWriter。
|
|
对象流
对象的序列化:把对象转换为字节序列。
对象的反序列化:把字节序列转换为对象。
主要学两个类:ObjectInputStream和ObjectOutputStream(不能直接用File对象做参数)。
先建一个类,叫做Person。注意,要实现序列化和反序列化,这个类必须implements Serializable接口,这是一个标记接口(即一个方法都没有),所以不必Override。
|
|
把Person的对象输出到文件中。
|
|
从文件中再把Person的对象读回来。
|
|
注意到Person类中age的类型前有一个transient,这表明该变量是不参与序列化的,而且不管你怎么修改它的值,从文件里读回来(即反序列化)的时候,它的值永远是0或null。
此外,如果类中还有static类型的变量,那么也不会参与序列化,但是它的值却是可以更改的。
数据流
可以读取和写入java的标准数据类型。
主要学两个类:DataInputStream和DataOutputStream,分别要求传入InputStream和OutputStream。
|
|