IO流基本概述
IO流是什么?
简单来说 io流就是输入输出流 ,读写数据的。
IO流的分类
IO流分为两大类:输入流 和 输出流
在这基础上的io流可分为四大流
字节输入流 、字节输出流 、字符输入流 、字符输出流
FileInputStream(文件字节输入流)方法
public FileInputStream(File file) | 创建字节输入流管道与源文件接通 |
public FileInputStream(String pathname) | 创建字节输入流管道与源文件接通 |
public int read() | 每次读取一个字节返回,如果发现没有数据可读会返回-1. |
public int read(byte[] buffer) | 每次用一个字节数组去读取数据,返回字节数组读取了多 少个字节,如果发现没有数据可读会返回-1. |
注意:使用FileInputStream每次读取一个字节,读取性能较差,并且读取汉字输出会乱码。
public FileInputStream(File file) | 创建字节输入流管道与源文件接通 |
public FileInputStream(String pathname) | 创建字节输入流管道与源文件接通 |
public int read() | 每次读取一个字节返回,如果发现没有数据可读会返回-1. |
public int read(byte[] buffer) | 每次用一个字节数组去读取数据,返回字节数组读取了多 少个字节,如果发现没有数据可读会返回-1. |
注意:使用FileInputStream每次读取多个字节,读取性能得到了提升,但读取汉字输出还是会乱码
文件字节输入流:一次读取完全部字节
public int read(byte[] buffer) | 每次用一个字节数组去读取,返回字节数组读取了多少个字节 ,如果发现没有数据可读会返回-1. |
public byte[] readAllBytes() throws IOException | 直接将当前字节输入流对应的文件对象的字节 数据装到一个字节数组返回 |
FileOutputStream(文件字节输出流)
作用:以内存为基准,把内存中的数据以字节的形式写出到文件中去
public FileOutputStream(File file) | 创建字节输出流管道与源文件对象 接通 |
public FileOutputStream(String filepath) | 创建字节输出流管道与源文件路 径接通 |
public FileOutputStream(File file,boolean append) | 创建字节输出流管道与源文件对 象接通,可追加数据 |
public FileOutputStream(String filepath,boolean append) | 创建字节输出流管道与源文件路 径接通,可追加数据 |
public void write(int a) | 写一个字节出去 |
public void write(byte[] buffer) | 写一个字节数组出去 |
public void write(byte[] buffer , int pos , int len) | 写一个字节数组的一部分出去。 |
public void close() throws IOException | 关闭流。 |
文件复制,就是将文件冲一个文件夹传入另一个文件夹。
任何文件的底层都是字节,字节流做复制,是一字不漏的转移完全部字节,只要复制后的文件格式一致就没问题
释放资源的方式
try-catch-finally
try-with-resource
() 中只能放置资源,否则报错
资源一般指的是最终实现了AutoCloseable接口。
public abstract class InputStream implements Closeable{ }
public abstract class OutputStream implements Closeable, Flushable { }
public interface Closeable extends AutoCloseable { }