IO体系
在Java API中,可以从其中读入一个字节序列的对象称作输入流,而可以向其中写入一个字节序列的对象称作输出流。抽象类InputStream和OutputStream构成字节IO流类层次结构的基础;又从抽象类Reader和Writer中继承出了一个专门用于处理Unicode字符的字符IO流的类层次结构。
IO流中所有的类又可根据操作对象的不同分为:
- 文件:FileInputStream、FileOutputStream、FileReader、FileWriter
- 数组:ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter
- 管道操作:PipedInputStream、PipedOutputStream、PipedReader、PipedWriter
- 基本数据类型:DataInputStream、DataOutputStream
- 缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
- 打印:PrintStream、PrintWriter
- 序列化反序列化:ObjectInputStream、ObjectOutputStream
- 流转换:InputStreamReader、OutputStreamWriter
InputStream
java.io.InputStream
抽象类是输入字节流中所有类的超类,实现了Closeable
、AutoCloseable
接口。
int available() //检查当前可读入的字节数量
abstract int read() //从输入流读取数据的下一个字节
int read(byte[] b) //从输入流读取数据到缓冲区b
int read(byte[] b, int off, int len) //从输入流读取最多len字节的数据到字节数组
long skip(long n) //跳过输入流的n字节数据
void mark(int readlimit) //在输入流当前位置标记
void reset() //返回到最后一个标记的位置
void close() //关闭输入流,冲刷缓冲区
ByteArrayInputStream
FileInputStream
java.io.FileInputStream extends InputStream:文件字节输入流,把数据读取到内存使用
构造方法:
FileInputStream(String name)
FileInputStream(File file)
读取数据:while循环读取到-1结束
读取多个字节:缓冲数组
FilterInputStream
过滤输入流,用来封装其他的输入流,并为它们提供额外的功能。常用子类有:BufferedInputStream、DataInputStream。
BufferedInputStream
DataInputStream
ObjectInputStream
OutputStream
java.io.OutputStream
表示字节输出流所有类的超类,接收输出字节并将其发送到某个接收器。实现的接口:Closeable
、Flushable
、AutoCloseable
接口。
abstract void write(int n) //写出一个字节的数据
void write(byte[] b) //输出流写入数据到缓冲区b
void write(byte[] b, int off, int len) //写出所有字节或某个范围的字节到数组
void close() //冲刷并关闭输出流
void flush() //冲刷输出流,将所有缓冲的数据发送到目的地
ByteArrayOutputStream
FileOutputStream
FilterOutputStream
过滤输出流,封装其它的输出流,并为它们提供额外的功能。常用子类:BufferedOutputStream、DataOutputStream和PrintStream。
BufferedOutputStream
DataOutputStream
PrintStream
ObjectOutputStream
Reader
java.io.Reader
是用于读取字符流的抽象类,实现的接口:Closeable
、AutoCloseable
、Readable
。子类必须实现的唯一方法是read(char [], int, int)
。
int read()
int read(char[] cbuf)
int read(char[] cbuf, int off, int len)
boolean ready()
void mark()
long skip(long n)
void reset()
void close()
CharArrayReader
BufferedReader
InputStreamReader
FileReader
Writer
java.io.Writer
用于写入字符流的抽象类,子类必须实现的唯一方法时write(char [], int, int)
,flush()
和close()
。
void write(int c)
void write(String str)
void write(String str, int off, int len)
void write(char[] cbuf)
void write(char[] cbuf, int off, int len)
Writer append(char c)
Writer append(CharSequence csq)
Writer append(CharSequence csq, int start, int end)
void flush()
void close()
CharArrayWriter
BufferedWriter
OutputStreamWriter
FileWriter
RandomAccessFile
File
java.io.File
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作,实现的接口:Serializable
、Comparable<File>
//绝对路径和相对路径
String getAbsolutePath()
String getPath()
String getName()
long length()
//判断功能的方法
boolean exists()
boolean isDirectory()
boolean isFile()
//创建删除功能的方法
boolean createNewFile()
boolean delete()
boolean mkdir()
boolean mkdirs()
//目录的遍历
String[] list()
File[] listFiles()