之前一直没怎么弄目标 ,现在看无非就是读写两种
File类在Java.io包内 是唯一代表文件本身的对象 通过调用file类 能过创建 删除 或者是重命名文件 ,判断某个文件是否存在然后就是从流向分 输入输出流 从传输内容分 就是字节流和字符流(主要为了中文)
先从流向分析
输入流和输出流 都有个顶级父类 但是都是抽象类 得依靠子类去实现
输入流 InputStream 输出流 OutputStream
InputStream有两个常用子类 FileInputStream 和BufferedInputStream
两者的区别呢就是后面的高效一点 原因呢就是他自带缓冲流(我的理解就类似于搬砖 前一个子类呢就是一次搬一块,后一个子类呢 就是一块快的往小车上放 然后一次运过去)底层逻辑就是reader(byte[]),
OutputStream也是两个常用子类 FileOutputStream 和BufferedOutputStream
区别都和上面是一样的
然后就是字符流了
也是两个顶级父类 Writer Reader
但是他们常用的子类有三个
拿Reader举例
Reader FileReader BufferedReader InputStreamReader BufferedReader有自己特有的方法 readLine() 一次读取一行文本 读取到文件末尾 返回null InputStreamReader 转换流 将字节流转换为字符流
下面写一下常用方法
1、File类
构造方法:
File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
File(File parent, String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
File(String parent, String child):根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
常用方法:
boolean exists():测试此抽象路径名表示的文件或目录是否存在
boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
boolean delete():删除此抽象路径名表示的文件或目录。
boolean createNewFile():当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
boolean mkdir():创建此抽象路径名指定的目录。
boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
String getName():返回由此抽象路径名表示的文件或目录的名称。
String getPath():将此抽象路径名转换为一个路径名字符串。
String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
long length():返回由此抽象路径名表示的文件的长度。
String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。2、InputStream类(抽象类)
3、FileInputStream类(InputStream类的子类)
构造方法:
FileInputStream(File file):通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name):通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
常用方法:
int available():返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。
int read():从此输入流中读取一个数据字节。
int read(byte[] b):从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
int read(byte[] b, int off, int len):从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
4、OutputStream类(抽象类)5、FileOutputStream类(OutputStream类的子类)
构造方法:
FileOutputStream(File file):创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append):创建一个向指定 File 对象表示的文件中写入数据的文件输出流。append为true表示向文件末尾添加数据,不会覆盖文件中原有数据
FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append):创建一个向具有指定 name 的文件中写入数据的输出文件流。append为true表示向文件末尾添加数据,不会覆盖文件中原有数据
常用方法:
void write(byte[] b):将 b.length 个字节从指定 byte 数组写入此文件输出流中。
void write(byte[] b, int off, int len):将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
void write(int b):将指定字节写入此文件输出流。6、Reader类(抽象类)
7、InputStreamReader类(Reader类的子类)
构造方法:
InputStreamReader(InputStream in):创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName):创建使用指定字符集的 InputStreamReader。
常用方法:
int read():读取单个字符。
int read(char[] cbuf):将字符读入数组。
int read(char[] cbuf, int offset, int length):将字符读入数组中的某一部分。
8、FileReader类(InputStreamReader类的子类)--只能按照平台编码格式读取文件数据,不能指定编码格式
构造方法:
FileReader(File file):在给定从中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(String fileName):在给定从中读取数据的文件名的情况下创建一个新 FileReader。
常用方法:
int read():读取单个字符。
int read(char[] cbuf):将字符读入数组。
int read(char[] cbuf, int offset, int length):将字符读入数组中的某一部分。
9、BufferedReader类(Reader类的子类)
构造方法:
BufferedReader(Reader in):创建一个使用默认大小输入缓冲区的缓冲字符输入流。
常用方法:
int read():读取单个字符。
int read(char[] cbuf):将字符读入数组。
int read(char[] cbuf, int off, int len):将字符读入数组的某一部分。
String readLine():读取一个文本行。 --BufferedReader类中特有的方法,可以一行一行的读取数据10、Writer类(抽象类)
11、OutputStreamWriter类(Writer类的子类)
构造方法:
OutputStreamWriter(OutputStream out):创建使用默认字符编码的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName):创建使用指定字符集的 OutputStreamWriter。
常用方法:
void write(char[] cbuf):写入字符数组。
void write(char[] cbuf, int off, int len):写入字符数组的某一部分。
void write(int c):写入单个字符。
void write(String str):写入字符串。
void write(String str, int off, int len):写入字符串的某一部分。
void flush():刷新该流的缓冲。12、FileWriter类(OutputStreamWriter类的子类)
构造方法:
FileWriter(File file):根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(File file, boolean append):根据给定的 File 对象构造一个 FileWriter 对象。
FileWriter(String fileName):根据给定的文件名构造一个 FileWriter 对象。
FileWriter(String fileName, boolean append):根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
常用方法:
void write(char[] cbuf):写入字符数组。
void write(char[] cbuf, int off, int len):写入字符数组的某一部分。
void write(int c):写入单个字符。
void write(String str):写入字符串。
void write(String str, int off, int len):写入字符串的某一部分。
void flush():刷新该流的缓冲。
13、BufferedWriter类(Writer类的子类)
构造方法:
BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流。
常用方法:
void newLine():写入一个行分隔符(换行)。
void write(char[] cbuf):写入字符数组。
void write(char[] cbuf, int off, int len):写入字符数组的某一部分。
void write(int c):写入单个字符。
void write(String str):写入字符串。
void write(String str, int off, int len):写入字符串的某一部分。14、DataInputStream类(FilterInputStream类的子类)
构造方法:
DataInputStream(InputStream in):使用指定的底层 InputStream 创建一个 DataInputStream。
常用方法:
int read():读取单个字节。
int read(byte[] b):从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中。
int read(byte[] b, int off, int len):从包含的输入流中将最多 len 个字节读入一个 byte 数组中。15、DataOutputStream类(FilterOutputStream类的子类)
构造方法:
DataOutputStream(OutputStream out):创建一个新的数据输出流,将数据写入指定基础输出流。
常用方法:
void write(int b):将 b.length 个字节写入此输出流。
void write(byte[] b):将 b.length 个字节从指定 byte 数组写入此文件输出流中。
void write(byte[] b, int off, int len)将指定 byte 数组中从偏移量 off 开始的 len 个字节写入基础输出流。16、ObjectOutputStream类(OutputStream类的子类)
构造方法:
ObjectOutputStream(OutputStream out):创建写入指定 OutputStream 的 ObjectOutputStream。
常用方法:
void writeObject(Object obj):将指定的对象写入 ObjectOutputStream。17、ObjectInputStream类(InputStream类的子类)
构造方法:
ObjectInputStream(InputStream in):创建从指定 InputStream 读取的 ObjectInputStream。
常用方法:
Object readObject():从 ObjectInputStream 读取对象。