静听花开花落,坐看云卷云舒
一切属于IO流都要进行关闭操作
1. File文件操作
文件的分隔符:File.separator;
方法 | 类型 | 说明 |
---|---|---|
public File(String pathName) | 构造 | 操作文件的完整路径 |
public File(File parent,String child) | 构造 | 操作文件的父路径和文件的名称 |
public boolean createNewFile() throws Exception | 普通 | 创建文件 |
public boolean delete() | 普通 | 删除文件 |
public boolean exists() | 普通 | 文件是否存在 |
public File getParentFile() | 普通 | 找到文件的父路径 |
public boolean mkdirs() | 普通 | 创建指定路径 |
public boolean canRead() | 普通 | 文件是否可读 |
public boolean canWrite() | 普通 | 文件是否可写 |
public boolean canExecute() | 普通 | 文件是否可执行 |
public long length() | 普通 | 获取文件大小(字节) |
public boolean isDirectory() | 普通 | 是否是目录 |
public boolean isFile() | 普通 | 是否是文件 |
public boolean isHidden() | 普通 | 是否隐藏 |
public File[] listFiles() | 普通 | 列出目录中的全部文件信息 |
- 栗子1:
1 | import java.io.File; |
- 栗子2:
1 | import java.io.File; |
2. 字节输出流(OutputStream)
程序需要读取数据(读)时,利用输入流完成,程序需要将数据保存到数据(写)时,需要输出流
1 | public abstract class OutputStream extends Object implements Closeable, Flushable {} |
- Closeable接口
1 | public interface Closeable extends AutoCloseable { |
- Flushable接口
1 | public interface Flushable { |
方法 | 类型 | 说明 |
---|---|---|
public abstract void write(int b) throws IOException | 普通 | 输出单个字节数据 |
public void write(byte[] b) throws IOException | 普通 | 输出一组字节数据 |
public void write(byte[] b,int off,int len) throws IOException | 普通 | 输出部分字节数据 |
public void close() throws IOException | 普通 | 关闭输出流 |
public void flush() throws IOException | 普通 | 刷新缓冲区 |
主要目的为OutputStream父类实例化
方法 | 类型 | 说明 |
---|---|---|
public FileOutputStream(File file) throws FileNotFoundException | 构造 | 采用覆盖的形式创建文件输出流 |
public FileOutputStream(File file,boolean append) throws FileNotFoundException | 构造 | 采用覆盖或者追加的形式创建文件输出流 |
- 栗子:
1 | import java.io.File; |
3. 字节输入流(InputStream)
程序读取的时候需要输入
1 | public abstract class InputStream extends Object implements Closeable {} |
方法 | 类型 | 说明 |
---|---|---|
public abstract int read throws IOException | 普通 | 读取单个字节数据,如果现在已经读取到底了,返回-1 |
public int read(byte[] var1) throws IOException | 普通 | 读取一组字节数据,返回的是读取的个数;如果没有数据,且已经读取到底则返回-1 |
public int read(byte[] var1, int var2, int var3) throws IOException | 普通 | 读取一组字节数据,只占数组的部分 |
public void close() throws IOException | 普通 | 关闭输入流 |
public byte[] readAllBytes() throws IOException | 普通 | 读取输入流的全部字节数据,jdk1.9后新增 |
public long transferTo(OutputStream out) throws IOException | 普通 | 输入流转存到输出流,jdk1.9后新增 |
栗子:
1 |
|
4. 字符输出流(Writer)
方便中文的输出和写入
1 | public abstract class Writer implements Appendable, Closeable, Flushable{} |
- Appendable接口
1 | // |
方法 | 类型 | 说明 |
---|---|---|
public void write(int var1) throws IOException | 普通 | 输出单个字符 |
public void write(char[] var1) throws IOException | 普通 | 输出字符数组 |
public void write(String var1) throws IOException | 普通 | 输出字符串 |
public Writer append(CharSequence var1) throws IOException | 普通 | 追加输出内容 |
public abstract void flush() throws IOException | 普通 | 刷新缓冲区 |
public abstract void close() throws IOException | 普通 | 关闭输出流 |
方法 | 类型 | 说明 |
---|---|---|
public FileWriter(File var1) throws IOException | 普通 | 采用覆盖的形式创建文件输出流 |
public FileWriter(File var1, boolean var2) throws IOException | 普通 | 采用覆盖或追加的形式创建文件输出流 |
- 栗子:
1 | import java.io.File; |
5. 字符输入流(Reader)
方便中文的输入和读
1 | public abstract class Reader implements Readable, Closeable {} |
- Readable接口
1 | // |
方法 | 类型 | 说明 |
---|---|---|
public int read() throws IOException | 普通 | 读取单个字符,无数据读取时返回-1 |
public int read(char[] var1) throws IOException | 普通 | 读取多个字符,并且返回读取个数 |
public long skip(long var1) throws IOException | 普通 | 跳过指定的字符个数后读取 |
public boolean ready() throws IOException | 普通 | 是否可以开始读取数据 |
public abstract void close() throws IOException | 普通 | 关闭输入流 |
- 栗子
1 | import java.io.File; |
6. 字节流与字符流区别,转换流
字节流直接进行数据处理操作,字符流使用了缓冲区
- 转换流栗子:
1 | import java.io.*; |
7. 内存操作流
一般用于BIO
字节内存操作流:ByteArrayInputStream,ByteArrayOutputStream
- ByteArrayInputStream类
1 | public class ByteArrayInputStream extends InputStream {} |
- ByteArrayOutputStream
1 | public class ByteArrayOutputStream extends OutputStream {} |
字符内存操作流:CharArrayReader,CharArrayWriter
- CharArrayReader
1 | public class CharArrayReader extends Reader {} |
- CharArrayWriter
1 | public class CharArrayWriter extends Writer {} |
8. 管道流
一般用于NIO
管道输出流:PipedOutputStream,PipedWriter
- PipedOutputStream
1 | public class PipedOutputStream extends OutputStream {} |
- PipedWriter
1 | public class PipedWriter extends Writer {} |
管道输入流:PipedInputStream,PipedReader
- PipedInputStream
1 | public class PipedInputStream extends InputStream {} |
- PipedReader
1 | public class PipedReader extends Reader {} |
9. 打印流
解决字节和字符输出流的局限性
1 | public class PrintWriter extends Writer {} |
- 栗子:
1 | import java.io.File; |
10. 缓冲输入流(BufferedReader)
字符流的缓冲区数据读取
方法 | 类型 | 说明 |
---|---|---|
public BufferedReader(Reader var1) | 构造 | 接受一个Reader类的实例 |
public String readLine() throws IOException | 普通 | 一次性从缓冲区中将内容全部读取进来 |
- 栗子
1 | import java.io.BufferedReader; |
11. 对象序列化
把一个对象变为二进制的数据流的方法,必须实现Serializable接口,不能序列化关键字 transient
方法 | 类型 | 说明 |
---|---|---|
public ObjectOutputStream(OutputStream var1) throws IOException | 构造 | 传入输入的对象 |
public final void writeObject(Object var1) throws IOException | 普通 | 输出对象 |
方法 | 类型 | 说明 |
---|---|---|
public ObjectInputStream(InputStream var1) throws IOException | 构造 | 构造输入对象 |
public final Object readObject() throws IOException, ClassNotFoundException { | 普通 | 从指定位置读取对象 |
- 栗子
1 | import java.io.Serializable; |
- 对象序列化与反序列化
1 | import java.io.*; |
12. 总结
总结了一些IO编程,还有一些没有在里面,欢迎在评论总结!