目录
I/O流概述
字节流的使用
文件字节输入流:每次读取一个字节
文件字节输入流:每次读取一个字节数组
-
读取一个字节数组时返回读取的字节数,数据读取在字节数组中
- 使用后两个参数保证每次读多少输出多少
文件字节输入流:每次读完全部字节
一次读一个字节数组可能导致中文乱码(一个中文字符在utf-8下通常占3个字节可能被隔断)
文件字节输出流:写字节数据到文件
创建输出流时append为true时,数据为追加写入,创建管道不会清空数据。
文件拷贝
package org.example;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Main {
public static void main(String[] args) throws Exception {
File f = new File("D:\\Git\\video.mp4");
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream("D:\\Git\\video11.mp4");
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) != -1){
fos.write(bytes,0,length);
}
System.out.println("复制完成!");
fis.close();
fos.close();
}
}
资源释放的方式
try-catch-finally
不建议在finally中加return语句
try-with-resource
推荐使用JDK7优化方案
字符流的使用
文件字符输入流-一次读取一个字符
缺点:性能较慢
文件字符输入流-一次读取一个字符数组
文件字符输出流
此外还有流的关闭与刷新
创建输出流时append为true时,数据为追加写入,创建管道不会清空数据。