Java学习笔记-Java基础8(文件)

1.File:通过该类可在程序中操作硬盘上的文件和目录,但是该类只用于表示文件或目录的信息(名称、大小等),不能对文件的内容进行访问

    1)File(String pathname):通过给定的字符串转换为抽象路径名来创建一个新File实例

    2)表示路径时,应使用File.separator表示分隔符(/或\),以避免系统差异

    3)String getName():获取文件或目录的名字

    4)boolean exists():判断当前File所表示的文件或目录是否存在

    5)long length():获取当前File所表示的文件或目录的字节量

    6)boolean canRead()/canWriter()/canExecute():判断当前File所表示的文件或目录是否可读/可写/可执行

    7)boolean isFile()/isDirectory():判断当前File所表示的文件或目录是否是文件/目录

    8)File[] listFiles():获取当前File所表示的目录中的所有文件和目录,该方法支持“过滤器”,过滤器的类需要实现FileFilter接口,并重写boolean accept(File file){过滤条件}方法,listFiles方法会返回符合过滤条件的子项

    9)boolean mkdir()/mkdirs():创建单层目录/多层次目录

    10)File getParentFile():获取当前File所表示的文件或目录的父目录。创建文件时,应首先判断该文件所在的目录是否存在,若不存在会报出异常

2.RandomAccessFile:该类是基于指针的位置读取文件的信息,可对文件进行读写操作

    1)void write(int n):写出给定的int值的“低8位”,只写1个字节。为了提高效率,必须减少读取次数,可用该方法的重载方法:

        ---void write(byte[] b):根据指针所在位置连续写出给定数组中的所有字节

        ---void write(byte[] b,int offset,int len):根据指针所在位置连续写出给定数组中的部分字节,这个部分是从数组的offset处开始,连续len个字节

    2)int read():从当前文件读取1个字节,将该字节存入返回的int值中,int值“低8位”有效,若返回值为-1,表示读到了文件末尾

    3)long getFilePointer():获取RandomAccessFile的指针位置

    4)void seek(long position):将指针调整到给定的位置

    5)int skipBytes(int n):该方法会尝试跳过n个字节,返回值为实际跳过的字节数

3.节点流与处理流:

    -节点流:可以从或向一个特定的地方读写数据

    -处理流:是对一个已存在的流的连接和封装,构造方法通常会传入另一个流,处理这个流,目的是简化操作

4.InputStream:所有字节输入流的父类,定义了基础的读取方法:

    -int read():读取1个字节,以int返回,该值“低8位”有效,若返回值为-1,则表示EOF

    -int read(byte[] b):尝试读取给定数组length个字节并存入该数组,返回值为实际读到的字节量

5.OutputStream:所有字节输出流的父类,定义了基础的写出方法:

    -void write(int d):写出1个字节,给定值的int“低8位”有效

    -void write(byte[] b):将给定的字节数组中的所有字节全部写出

6.FileOutputStream:文件的字节输出流,使用该流以字节为单位将数据写入文件,构造方法:

    1)FileOutputStream(File file)

    2)FileOutputStream(String filename)

    3)FileOutputStream(File file,boolean append):第二个参数指定是否进行追加写操作,若不追加,当前文件中的所有数据会被清除,然后重写数据

7.BufferedOutputStream:缓冲流,可将数据先存入缓存区,当缓冲区满了之后,一次性写出数据

    1)void flush():强制将缓冲区的字节写出,无论缓冲区是否装满

    2)void close():关闭流,会自动flush一次

8.将一个特定的数据结构转换为一组字节的过程,称之为序列化;将这组数组写入硬盘的过程,称之为持久化。一般用于传输和保存

    1)ObjectOutputStream:提供了void writeObject(Object o)方法,将给定的对象转换为一组字节后写出,该对象的类需要实现Serializa接口,最好为类添加版本号(serialVersionUID

    2)ObjectInputStream:将一组字节转换为对应的对象,用于反序列化

9.Reader:字符流的父类,定义了读取方法,以char为单位,一次处理一个unicode

    -int read():读取1个字符,以int返回,该值“低16位”有效,若返回值为-1,则表示EOF

    -int read(char[] c):尝试读取给定数组length个字符并存入该数组,返回值为实际读到的字符量

10.Writer:所有字符输出流的父类,定义了基础的写出方法:

    -void write(int d):写出1个字符,给定值的int“低16位”有效

    -void write(char[] c):将给定的字节数组中的所有字符全部写出

    -void write(char[] c,int offset,int len):根据指针所在位置连续写出给定数组中的部分字符,这个部分是从数组的offset处开始,连续len个字符

11.OutputStreamWriter(OutoutStream out,String charsetName):将给定的字符串按照特定的字符集转换为字符后写出

12.InputStreamReader:字符输入流,用于读取字符数据

13.PrintWriter(Writer writer,boolean autoFlush):具有自动行刷新的缓冲字符输出流

14.BufferedReader:缓冲字符输入流,可提高读取效率

    -String readLine():一次读取一行字符串,返回值为读取的字符串,若返回值为null,怎说明文本EOF

15.组合示例

Java学习笔记-Java基础8(文件)_第1张图片

Java学习笔记-Java基础8(文件)_第2张图片

你可能感兴趣的:(学习笔记-Java)