- I/O是Input/Output缩写,用于处理数据传输,如读写文件,网络通讯等
- java程序中,对数据的输入输出操作以流的方式进行
- java.io包下有各种“流”类和接口,以获取不同种类数据,并通过方法输入或输出数据
- 输入:读取外部数据(磁盘、光盘等)到程序(内存)中
- 输出:将程序数据输出到存储设备中
流的分类
- 按操作数据单位不同分为:字节流(8bit)-二进制文件,字符流(按字符,对应几个字节)-文本文件
- 按数据流的流向不同分为:输入流,输出流
- 按流的角色不同分为:节点流,处理流/包装流

InputStream :字节输入流
常用子类:
- FileInputStream :文件输入流
- BufferedInputStream:缓冲字节输入流
- ObjectInputStream:对象字节输入流
FileInputStream

FileOutputStream
如果文件不存在会创建文件

拷贝文件
使用FileInputStream和FileOutputStream来拷贝文件
先用FileInputStream读取,存在一个byte类型的buf数组中,并同时用int readLen获取读取到的长度。然后用FileOutputStream的write(buf, 0, readLen)的方式来输出文件内容,而不是直接用write(buf),因为有可能buf大小不够,一次性读不完,最后一次写入的时候,可能只剩下几个字节了,但你又写了buf.length的大小进去。
FileReader
相关方法:
- new FileReader(File/String)
- read:每次读单个字符,返回该字符,到文件末尾返回-1
- read(char[]):读取多个字符到数组,返回读取到的字符数,文件末尾返回-1
常用API:
- new String(char[])
- new String(char[], off, len)
FileWriter
- new FileWriter(File/String): 覆盖模式,流的指针在首端
- new FileWriter(File/String, true): 追加模式,流的指针在末端
- write(int):写单个字符
- write(char[]): 写入指定数组
- write(char[], off, len)
- write(String):写入整个字符串
- write(String, off, len)
常用API:String: toCharArray: String转换成char[]
FileWriter使用后,必须要关闭(close)或刷新(0flush),否则写入不到指定文件
本文章使用limfx的vscode插件快速发布