File 类
不管是文件还是目录,都是使用File来操作的,File能新建、删除、重命名文件和目录,File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
访问文件和目录
String getName():返回此 File 对象所表示的文件名或路径名
boolean exists():判断 File 对象对应的文件或目录是否存在
boolean isFile():判断 File 对象所对应的是否是文件,不是目录
boolean isDirectory():判断 File 对象所对应的是否是目录,不是文件
String[] list():列出 File 对象的所有子文件名和路径名
File[] listFile():列出 File 对象的所有子文件和路径名
Java 的 IO 流
流的分类
-
输入流和输出流
按照流的流向来分,可以分为输入流和输出流- 输入流:只能从中读取数据,而不能写出数据(硬盘到内存)
- 输出流:只能写而不能读(内存到硬盘)
- Java 的输入流主要由 InputStream 和 Reader 作为基类,输出流主要由 OutputStream 和 Writer 作为基类。
-
字节流和字符流
用法完全相同,区别在于字节流和字符流操作的数据单元不同:字节流操作的最小数据单元是8位的字节,而字符流操作的最小数据单元是16位的字符(在Java中,字符采用16位的unicode编码方式编码)。字节流主要由 InputStream 和 OutputStream 作为基类,而字节流主要由 Reader 和 Writer 作为基类。
-
节点流和处理流
按照流的节点划分,可以分为节点流和处理流。可以从/向一个特定的IO设备读/写数据的流,称为节点流。
处理流则用于对一个已存在的流进行连接或封装,通过封装后的流实现读写的功能。处理流也称为高级流。
输入/输出流体系
处理流的用法
使用处理流的典型思路是:使用处理流来包装节点流,程序通过处理流来执行输入/输出的功能,让节点流与底层的I/O设备、文件交互。
我们识别处理流非常简单,只要流的构造器参数不是一个物理节点,而是一个已经存在的流,那么这种流就一定是处理流。
Java 中常用的节点流
- 文件:FileInputStream、 FileOutputStream、 FileReader、 FileWriter 文件进行处理的节点流。
- 字符串: StringReader、 StringWriter 对字符串进行处理的节点流。
- 数 组 ByteArrayInputStream、 ByteArrayOutputStream、 CharArrayReader、 CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
- 管道: PipedInputStream、 PipedOutputStream、PipedReaderPipedWriter对管道进行处理的节点流。
- 父 类 InputStream、 OutputStream、 Reader、 Writer
Java 中常用的处理流
- 缓冲流:BufferedInputStrean、 BufferedOutputStream、 BufferedReader、 BufferedWriter增加缓冲功能,避免频繁读写硬盘。
- 转换流:InputStreamReader、 OutputStreamReader实现字节流和字符流之间的转换。
- 数据流 DataInputStream、 DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。