8 第八章IO流
8.1 File类
File 就是文件 ,在java中表示路径名。
- 实例
File
类是不可变的; 也就是说,一旦创建,由File
对象表示的抽象路径名永远不会改变。
路径有相对路径和绝对路径。
8.1.1 构造方法
- File(String path)
将一个字符串描述的路径,封装成一个 File对象。 - File(String parent,String Child)
将两个字符串(父级路径, 子级路径),拼接之后形成的路径封装成一个File对象。 - File(File parent, String child)
将File类型的父级路径和String类型的字节路径拼接成一个新路径,封装成File对象
**注意:**创建好File对象后,只是封装了一个路径, 和磁盘上是否有这个路径无关。
8.1.2 创建功能
- createNewFile() 创建文件
- mkdir() 创建文件夹,如果父级路径不存在,则文件夹创建失败。
- mkdirs() 创建文件夹,如果路径不存在,则会自动创建路径。
8.1.3 删除功能
- delete() 可以删除文件,也可以删除文件夹。
注意:不能删除非空文件夹(也就是说只要文件夹里还有文件,delete()方法就不能删除这个文件夹)
8.1.4 重命名功能
- renameTo(File dest) 重命名,参数是修改后的文件路径。
注意:如果修改了父级路径就是剪切+重命名,不修改父级路径就仅仅只是重命名。
8.1.5 判断功能
- exists(),判断调用者路径是否存在
- isFile(),判断调用者是否是一个文件
- isDirectory(),判断调用者是否是一个文件夹
8.1.6 获取功能
获取路径
- getName() 获取最短的那个文件或者文件夹名称
- getPath() 获取相对路径,构造方法中传入的那个字符串
- getAbsolutePath() 获取绝对路径
获取文件的属性
- length() 获取文件的字节个数,只能针对文件使用,不能针对文件夹使用
- lastModified() 获取文件的最后修改时间
获取文件夹中的内容
- String[] list() 返回文件夹中的所有内容的名称(不包含子文件夹中的内容)
- File[] listFiles() 返回文件夹中的所有内容的File对象(不包含子文件夹中的内容) 注意事项: 这两个方法只能针对文件夹使用,不能针对文件使用
8.2 IO流
8.2.1 字节流
InputStream
InputStream是一个定义了Java流式字节输入模式的抽象类。该类的所有方法在出错条件下引发一个IOException 异常。它的主要方法定义如下
方法 | 方法介绍 |
---|---|
available() | 返回可读的字节数量 |
read(byte[] b,int off,int len) | |
read() | |
skip(long n) | 跳过指定的字节数 |
close() | 关闭流,释放资源 |
reset() | 重新读取位置为上次mark标记的位置 |
markSupported() | 如果调用的流支持mark()或reset()就返回true |
OutputStream
OutputStream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void值并且在出错情况下引发一个IOException异常。它的主要方法定义如下:
方法 | 方法介绍 |
---|---|
write(int b) | 向输出流写入单个字节 |
write(byte[] buffer) | 向一个输出流写入一个完整的字节数组 |
write(byte[] buffer,int off,int numBytes) | 写入数组buffer 以 buffer[offset]为起点的numBytes个字节区域内的内容 |
flush() | 刷新缓冲流 |
close() | 关闭输出流 |
8.2.2 字符流
Reader
Reader是Java定义的流式字符输入模式的抽象类。类中的方法在出错时引发IOException异常。
方法 | 方法介绍 |
---|---|
read() | |
read(char[] buffer) | |
read(char[] buffer,int off,int numChars) | |
ready() | |
skip(long numChars) | |
markSupported() | |
reset() | |
mark(int numChars) | |
close() |
Writer
Reader是Java定义的流式字符输入模式的抽象类。类中的方法在出错时引发IOException异常。
方法 | 方法介绍 |
---|---|
write(char[] buffer) | |
write(char[] buffer,int off,int numChars) | |
close() | |
flush() | |
append(CharSequence csq) | 追加一个字符序列 |
append(CharSequence csq, int start,int end) | |
append(char c) | 追加写入一个16位的字符 |
8.3 打印流
在整个IO包中,打印流是输出信息最方便的类,主要包括字节打印流(PrintStream)和字符打印流(PrintWriter)。打印流提供了非常方便的打印功能,可以打印任何的数据类型。如:小数、整数、字符串等。
PrintStream和PrintWriter都属于输出流,分别针对输出字节和字符。
PrintStream和PrintWriter提供了重载的print()、println()方法用于多种数据类型的输出。
PrintStream和PrintWri