File类:
描述文件系统中的一个文件或者目录,可以通过File类查看磁盘上的一个文件或目录,可以获取文件的信息:大小,文件名等,但
是不能通过File获取文件内容,可以通过File类创建文件或目录,删除文件或目录
FileFilter:文件过滤器
FileFilter是一个接口,可以规定过滤的条件,在获取某个目录时可以通过给定的删除条件来获取满足要求的子项
描述文件系统中的一个文件或者目录,可以通过File类查看磁盘上的一个文件或目录,可以获取文件的信息:大小,文件名等,但
是不能通过File获取文件内容,可以通过File类创建文件或目录,删除文件或目录
FileFilter:文件过滤器
FileFilter是一个接口,可以规定过滤的条件,在获取某个目录时可以通过给定的删除条件来获取满足要求的子项
设计模式——回调模式
定义一段逻辑(一个实现逻辑的对象),在调用其它方法时,将该逻辑通过参数传入,这个方法啊在执行过程中会调用我们传入的
逻辑来达成目的(我们不显式地主动调用)。这种现象就叫做回调模式
最常见的应用场景:按钮监听器、过滤器的使用等
定义一段逻辑(一个实现逻辑的对象),在调用其它方法时,将该逻辑通过参数传入,这个方法啊在执行过程中会调用我们传入的
逻辑来达成目的(我们不显式地主动调用)。这种现象就叫做回调模式
最常见的应用场景:按钮监听器、过滤器的使用等
RandomAccessFile类
作用:可以方便地读写文件内容
打开文件的模式:rw:打开文件后可进行读写操作 r:读操作
1)RandomAccessFile是基于指针进行读写操作的,指针在哪里就从哪里读写
常用方法:
a.写操作
write(int b):向文件写字节,注意并不是将整个int写进去,而是写他的低八位,即其所代表的最低字节。
write(byte[] data):向文件中写字节数组
write(byte[] data, int off, int length):从data数组的offset位置开始写,连续写length个字节
到文件中。
writeInt(int b):一次写一个int,即四个字节。叫做序列持久化。
writeLong()、writeDouble()......
writeUTF(String str):写字符串,以UTF-8的编码方式
b.读操作
int read():读取一个字节,若已读到文件末尾,则返回-1
int read(byte[] buf):尝试读取buf.length个字节。并将读取的字节存入buf数组。返回实际读取的字节数。
若没有读取到数组也是返回-1
int read(byte[] buf, int off, int length):从文件中读取length个字节,从buf数组的off位置开始
写入。返回实际读取的字节数。
int readInt():读一个Int
readLong()、readDouble()......
readUTF(String str):读字符串,以UTF-8的编码方式
c.指针操作
seek(long pos):将指针移动到某个位置
long getFilePointer():获取当前指针的位置,都是从0开始的
作用:可以方便地读写文件内容
打开文件的模式:rw:打开文件后可进行读写操作 r:读操作
1)RandomAccessFile是基于指针进行读写操作的,指针在哪里就从哪里读写
常用方法:
a.写操作
write(int b):向文件写字节,注意并不是将整个int写进去,而是写他的低八位,即其所代表的最低字节。
write(byte[] data):向文件中写字节数组
write(byte[] data, int off, int length):从data数组的offset位置开始写,连续写length个字节
到文件中。
writeInt(int b):一次写一个int,即四个字节。叫做序列持久化。
writeLong()、writeDouble()......
writeUTF(String str):写字符串,以UTF-8的编码方式
b.读操作
int read():读取一个字节,若已读到文件末尾,则返回-1
int read(byte[] buf):尝试读取buf.length个字节。并将读取的字节存入buf数组。返回实际读取的字节数。
若没有读取到数组也是返回-1
int read(byte[] buf, int off, int length):从文件中读取length个字节,从buf数组的off位置开始
写入。返回实际读取的字节数。
int readInt():读一个Int
readLong()、readDouble()......
readUTF(String str):读字符串,以UTF-8的编码方式
c.指针操作
seek(long pos):将指针移动到某个位置
long getFilePointer():获取当前指针的位置,都是从0开始的
java I/O流
流:根据方向分为:输入流和输出流。方向的定位是基于我们字节写的程序的。
输入流:流向程序的叫做输入流,用于获取数据的。没有write方法,只有read方法。
输出流:从程序流向外面的叫做输出流。用于向外输出数据的。没有read方法,只有write方法。
可以把流想象成管道,管道中流动的是水,而java中流动的是字节。
流:根据方向分为:输入流和输出流。方向的定位是基于我们字节写的程序的。
输入流:流向程序的叫做输入流,用于获取数据的。没有write方法,只有read方法。
输出流:从程序流向外面的叫做输出流。用于向外输出数据的。没有read方法,只有write方法。
可以把流想象成管道,管道中流动的是水,而java中流动的是字节。
InputStream:该接口存在输入流的特征
OutputStream:该接口定义了输出流的特征
OutputStream:该接口定义了输出流的特征
流根据源头分为:基本流(节点流)和处理流(高级流,过滤流)
基本流:有数据来源
处理流:没有数据来源,不能独立存在。它是用于处理基本流的
基本流:有数据来源
处理流:没有数据来源,不能独立存在。它是用于处理基本流的
根据处理的数据单位不同,分为:字节流(以字节的读取为单位)和字符流(以字符的读取为单位)
字节流:都是以stream结尾的
字符流:都是以reader/writer结尾的
字节流:都是以stream结尾的
字符流:都是以reader/writer结尾的
用于读写文件的字节流FIO/FOS
FileInputStream:文件输入流
1)只有read方法,没有write方法
2)常用的方法:
int available():返回当前文件输入流中可以读取的字节数。
没有一次性读取多个字节的方法,这一点是跟RandomFileAccessStream不一样的,因为它是低级流。
FileOutputStream:文件输出流
1)只有write方法,没有read方法,write方法与以前的一样使用。但是没有类似writeInt这种方法
2)几个构造方法。
a.FileOutputStream(File file)
会覆盖掉之前的文件
b.FileOutputStream(File file, boolean append)
append为true时,会在当前文件末尾进行写操作
append为false时,与FileOutputStream(File file)效果一致
c.FileOutputStream(String pathname, boolean append)
FileInputStream:文件输入流
1)只有read方法,没有write方法
2)常用的方法:
int available():返回当前文件输入流中可以读取的字节数。
没有一次性读取多个字节的方法,这一点是跟RandomFileAccessStream不一样的,因为它是低级流。
FileOutputStream:文件输出流
1)只有write方法,没有read方法,write方法与以前的一样使用。但是没有类似writeInt这种方法
2)几个构造方法。
a.FileOutputStream(File file)
会覆盖掉之前的文件
b.FileOutputStream(File file, boolean append)
append为true时,会在当前文件末尾进行写操作
append为false时,与FileOutputStream(File file)效果一致
c.FileOutputStream(String pathname, boolean append)
其他方面的知识:
1)try{}中变量的作用域:在语句块内部定义的变量的作用域仅仅在语句块内部
2)序列化:
a.基本类型序列化:将基本类型数据转换为字节数组(序列)的过程
b.对象序列化:
3)持久化:将数据写入磁盘的过程
4)所有的输入输出流在使用完成之后一定要关闭
5)finally的典型应用,关流,由于在try或者catch中去执行关流操作都可能因为异常而执行不到关流操作,因此可以选择
在finally语句块中执行关流操作,因为finally是不管有没有异常都要执行的。
1)try{}中变量的作用域:在语句块内部定义的变量的作用域仅仅在语句块内部
2)序列化:
a.基本类型序列化:将基本类型数据转换为字节数组(序列)的过程
b.对象序列化:
3)持久化:将数据写入磁盘的过程
4)所有的输入输出流在使用完成之后一定要关闭
5)finally的典型应用,关流,由于在try或者catch中去执行关流操作都可能因为异常而执行不到关流操作,因此可以选择
在finally语句块中执行关流操作,因为finally是不管有没有异常都要执行的。