一 IO流框架
二 IO知识点
(一) 基本概念
1 IO流
A 什么是IO流
I/O,即输入(Input)输出(Output),IO流指的是数据像连绵的流体一样进行传输。
B 作用
在本地磁盘或网络上传输(读/写)数据
C 分类
按数据流向分: 输入流 输出流
按操作方式分: 字节流: InputStream OutputStream
字符流: Reader Writer
2 IO流体系
3 IO流操作异常
A 什么是异常: 程序出错
B 异常分类: 异常Exception 和错误Error
C 处理异常: 抛出或捕获
4 File类
A 概念
文件,文件夹,一个File对象代表磁盘上的某个文件或文件夹
B 构造方法
File(String pathname)
File(String parent, String child)
File(File parent, String child)
C 成员方法
createNewFile():创建文件
mkdir()和mkdirs():创建目录
isDirectory():判断File对象是否为目录
isFile():判断File对象是否为文件
exists():判断File对象是否存在
getAbsolutePath():获取绝对路径
从本地磁盘开始的路径
举例:C:\Users\itcast\Desktop
getPath():获取文件的相对路径
相对某一位置的路径
Java项目中,相对路径从项目名开始
getName():获取文件名
list():获取指定目录下所有文件(夹)名称数组
listFiles():获取指定目录下所有文件(夹)File数组
(二) IO流的使用
1 数据流读写步骤:
//1 创建字符/字节输入流对象, 关联数据源文件
//2 创建字符/字节输出流对象, 关联目的地文件
//3 定义变量,记录读取到的内容
//4 循环读取, 只有条件满足就一直读,将读到的内容赋值给变量
//5 将读到的内容写入目的地文件中
//6 释放资源
2 在实际操作中, 我们最常用高效字符流和高效字节流.
A 字符缓冲流拷贝文件的标准代码: 一次读取一个字符数组
高效字符流: 字符缓冲流自带缓冲区, 大小是8192个字符, 就是16KB
底层: 是按字符数组进行读写的
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
int len;
while((len = br.read()) != -1) {
bw.write(len);
}
br.close();
bw.close();
}
}
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
char [] chs = new char[2048];
int len;
while((len = br.read(chs)) != -1) {
bw.write(chs, 0, len);
}
br.close();
bw.close();
}
}
B 字节缓冲流拷贝图片的标准代码: 一次读取一个字节数组
高效字节流: 字节缓冲流自带缓冲区, 大小是8192个字节, 就是8KB
底层: 是按字节数组进行读写的
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
int len;
while((len = bis .read()) != -1) {
bos.write(len);
}
bis .close();
bos.close();
}
}
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("E:\\flower.jpg"));
byte[] bytes = new bytes [2048];
int len;
while((len = bis .read(bytes )) != -1) {
bos.write(bytes , 0, len);
}
bis.close();
bos.close();
}
}
C 字符缓冲流拷贝文件 一次读取一行
public class TestUtils {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\pc\Desktop\1.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\1.txt"));
String str;
while((str= br.readLine() ) != null) {
bw.write(str);
//注意: 不同操作系统有不同的换行符
bw.newLine();
}
br.close();
bw.close();
}
}