IO:
按方向划分:
输入流
输出流
按类型划分:
字节流:
字符流:
--------------------------------------------------
字节输入流:
字节输出流:
字节流的常用类: InputStream : 抽象类
1.FileInputStream 专门处理文件
read(); -1
read(byte[] b);
read(byte[] b,int offset , int len);
2.ByteArrayInputStream 字节数组流
read();
read(byte[] b ,int offset , int len);
3.ObjectInputStream 对象流 反序列化
readObject();
OutputStream: 抽象类
1.FileOutputStream
write(int a);
write(byte[] b);
2.ByteArrayOutputStream
3.ObjectOutputStream 序列化
writeObject(Object obj);
File类; 代表文件 或 目录(文件夹)
new File(String path);
new File(File file);
new File(File parent, String child);
new File(String parent, String child);
1.createNewFile(); 创建一个新的文件
if(!file.exists()){
file.createNewFile();
}
2.mkdir(); mkdirs();
3.delete();
4.getAbsolutePath();
File().getPath();
5.getName();
6.isDirectory(); 判断是否是文件夹
7.isFile();
8.length();
9.lastModified();
10.File[] listFile(); 获取一个目录下的内容 (一层)
11.renameTo(File file);
12.createTempFile(String prefix,String suffix,File file);
}
--------------------------------------------------------
字符流:
字符输入流:
Reader:
常用子类:
1.BufferedReader: 字符流的缓冲区
close();
read();
read(char[] c, int offset , int len);
readLine(); 按行读
2.CharArrayReader
close();
read();
read(char[] ch , int offset , int len);
3.InputStreamReader 转换流
常用方法: reader.getEncoding()
reader.read();
reader.read(char[] c , int offset , int len);
|--FileReader 文件字符流
字符输出流 : Writer
1.BufferedWriter :
重点方法:
close();
flush();
writer(String str); 一次写一行
newLine(); 创建新的行
2.CharArrayWriter : 不是特别重要
append(); 拼接
write(char[] c);
toCharArray();
toString();
3.OutputStreamWriter
close();关闭
flush(); 强制写出 将缓存中的 内容 一些性能全部 写出
getEncoding();
writer(int a); 一次 也可以写一个
writer(char[] c ,int offset , int len);
writer(String str,int offset , int len);
|-- FileWriter
4.PrintWriter: 字符流的打印流
new PrintWriter(File file);
new PrintWriter(OutputStream ops);
new PrintWriter(Writer writer);
常用方法:
append();
print();
println();
writer();
System.in 代表的是 字节流
我们可以使用这句话 完成控制台输入
new Scanner(System.in);
new InputStreamReader(System.in);
字节流和 字符流的 应用场景:
1.字节流 读取的是 多媒体文件, mp3 , mp4, jpg ,png ...
2.字符流 读取的 是 文本 ,
-------------------------------------------------------------
异常 跟 流 有关的知识点:
资源的自动关闭:
//jdk1.5 提供的 资源的自动关闭
try(
//可视性不好
InputStream ips = new FileInputStream(file);
){
int a = 0;
while((a = ips.read())!= -1){
System.out.println((char)a);
}
} catch (Exception e) {
e.printStackTrace();
}
1. 使用字符流 完成文件的 复制
2. 文件夹的复制