15-IO流

nobility 发布于 2021-03-26 1250 次阅读


IO流

File

构造方法

  • 只是将路径进行了封装,文件不一定存在
  • 由于不同操作系统的路径分隔符不同,所以分割符使用File类的静态属性进行表示
属性名 描述
static final String separator 不同系统的分割符常量
构造方法名 描述
File(String pathname) 通过完整路径创建File对象
File(File parent, String child) 通过父级文件对象和子路径拼接创建File对象
File(URI uri) 通过URL路径创建对象

常用方法

操作方法
方法 描述
boolean exists() 判断该路径是否存在
String getParent() 以字符串形式获取父路径
File getParentFile() 以文件对象形式获取父路径
boolean createNewFile() 父路径存在,则根据路径创建文件,父路径不存在,则抛出异常
boolean delete() 根据路径删除文件或空目录
boolean mkdir() 根据路径创建为目录,只能创建一个
boolean mkdirs() 根据路径创建为目录,可以是多级目录
boolean renameTo(File dest) 将当前路径文件或路径更名为dest对象封装的文件名
获取文件信息方法
方法名 描述
boolean canExecute() 判断是否可执行
boolean canRead() 判断是否可读
boolean canWrite() 判断文件是否可写
File getAbsolutePath() 获取绝对路径
File getPath() 获取相对路径
String getName() 获取文件或目录名
boolean isDirectory() 判断路径是否是目录
boolean isFile() 判断路径是否是文件
long lastModified() 获取文件最后修改时间(毫秒)
long length() 获取文件大小(字节)
获取目录信息方法
方法名 描述
String[] list() 以字符串形式获取目录中的子路径信息(不包含父路径)
File[] listFiles() 以File对象形式获取目录中子路径信息(包含父路径)

IO类的体系结构

流的体系结构

文件字节流

FileOutpuStream

若路径不存在则会直接创建,若存在则不会

方法名 描述
FileOutputStream(File file) 创建写入file对象字节输出流
FileOutputStream(File file, boolean append) 创建写入file对象字节输出流,append为true表示追加写入
FileOutputStream(String name) 创建写入name路径表示的文件字节输出流
FileOutputStream(String name, boolean append) 创建写入name路径表示的文件字节输出流,append为true表示追加写入

FileInpuStream

若路径不存在则会抛出异常

方法名 描述
FileInputStream(File file) 创建写入file对象字节输入流
FileInputStream(String name) 创建写入name路径表示的文件字节输入流

字节缓冲流

仅仅是为字节输入输出流提供缓冲区,减少底层系统调用,从而使用缓冲输入输出流进行读写操作效率高,所以构造方法的参数都是字节输入输出流

BufferedOutputStream

方法名 描述
BufferedInputStream(InputStream in) 为字节输出流提供缓冲区

BufferedInputStream

方法名 描述
BufferedInputStream(InputStream in) 为字节输入流提供缓冲区

转换流

OutputStreamWriter

方法名 描述
OutputStreamWriter(OutputStream out) 使用平台默认字符集将字节输出流转换为字符输出流
OutputStreamWriter(OutputStream out, String charsetName) 使用指定字符集将字节输出流转换为字符输出流

InputStreamWriter

方法名 描述
InputStreamReader(InputStream in) 使用平台默认字符集将字节输入流转换为字符输入流
InputStreamReader(InputStream in, String charsetName) 使用指定字符集将字节输入流转换为字符输入流

文件字符流

FileWriter

构造方法

方法名 描述
FileWriter(File file) 创建写入file对象字符输出流
FileWriter(File file, boolean append) 创建写入file对象字符输出流,append为true表示追加写入
FileWriter(File file, Charset charset) 创建写入file对象字符输出流,并同时指定字符编码
FileWriter(File file, Charset charset, boolean append) 创建写入file对象字符输出流,并同时指定字符编码,append为true表示追加写入
FileWriter(String fileName) 创建写入fileName路径表示的文件字符输出流
FileWriter(String fileName, boolean append) 创建写入fileName路径表示的文件字符输出流,append为true表示追加写入
FileWriter(String fileName, Charset charset) 创建写入fileName路径表示的文件字符输出流,并同时指定字符编码
FileWriter(String fileName, Charset charset, boolean append) 创建写入fileName路径表示的文件字符输出流,并同时指定字符编码,append为true表示追加写入

FileReader

方法名 描述
FileReader(File file) 创建写入file对象字符输入流
FileReader(File file, Charset charset) 创建写入file对象字符输入流,并同时指定字符编码
FileReader(String fileName) 创建写入fileName路径表示的文件字符输入流
FileReader(String fileName, Charset charset) 创建写入fileName路径表示的文件字符输入流,并同时指定字符编码

字符缓冲流

BufferedWriter

方法名 描述
BufferedWriter(Writer out) 为字符输出流提供缓冲区
方法名 描述
void newLine() 写一个换行符

BufferedReader

方法名 描述
BufferedReader(Reader in) 为字符输入流提供缓冲区
方法名 描述
String readLine() 读取文件一行内容,不包括换行符,结尾返回null

打印流

PrintStream(字节打印流)

方法名 描述
PrintStream(File file) 创建写入file对象字节打印流
PrintStream(File file, String csn) 创建写入file对象字节打印流,并指定编码
PrintStream(String fileName) 创建写入fileName路径表示的文件打印字节流
PrintStream(String fileName, String csn) 创建写入fileName路径表示的文件打印字节流,并指定编码
PrintStream(OutputStream out) 将字节输出流转换成字节打印流

PrintWriter(字符打印流)

方法名 描述
PrintWriter(File file) 创建写入file对象字符打印流
PrintWriter(File file, String csn) 创建写入file对象字符打印流,并指定编码
PrintWriter(String fileName) 创建写入fileName路径表示的文件打印字符流
PrintWriter(String fileName, String csn) 创建写入fileName路径表示的文件打印字符流,并指定编码
PrintWriter (Writer out) 将字符输出流转换成字符打印流
PrintWriter(Writer out, boolean autoFlush) 将字符输出流转换成字符打印流,并指定调用println或printf方法时自动刷新缓冲区
PrintWriter(OutputStream out) 将字节输出流转换成字符打印流

序列化流

对象的序列化:将堆内存的对象信息转化为二进制数据进行网络传输或本地文件保存

需要序列化的对象,类要有无参构造,需要实现Serializable接口,该接口无需重写任何方法,只是作为序列化的标记。为类显示声明private static final long serialVersionUID版本号,以防止类修改后随机生成的版本号不一致导致无法反序列化

ObjectOutputStream

方法名 描述
ObjectOutputStream(OutputStream out) 将字节输出流转换为序列号流
方法名 描述
void writeObject(Object obj) 将对象序列化后写入文件

ObjectInputStream

方法名 描述
ObjectInputStream(InputStream in) 将字节输入流转换为反序列化流
方法名 描述
Object readObject() 将序列化后的对象,进行反序列化读入

transient修饰符

  • 该修饰符修饰的属性不会参与序列化过程
此作者没有提供个人介绍
最后更新于 2021-03-26