1、File类----------------------------->作用:与外界建立联系
2个常量:路径分隔符 File.pathSeparator(;分号) 文件分隔符 File.separator ( windows(\)其他操作系统(/))
1)、路径的表示形式
a)、String Path ="E:\\xp\\test\\2.jpg";
b)、String Path ="E":+File.separator+"xp"+File.separator+"test"+File.separator+"2.jpg";(优点:跨平台)
c)、String Path ="E:/xp/test/2.jpg";(推荐使用)
2)、相对路径与绝对路径与外界建立联系
a)、相对路径
String parentPath ="E:/xp/test/“;(父类目录)
String name = ”2.jpg“;(建立文件名)
第一种:File src = new File(parentPath,name);(直接让文件在目录下有联系);
第二种:File src = new File(new File(parentPath),name);(先让父类文件建立联系,再让文件在目录下有联系);
b)、绝对路径
File src = new File("E:/xp/test/2.jpg");
c)、没有盘符、以user.dir构建
2、IO流的基本操作
1、建立联系
File src = new File();
2、选择流
3、操作
输出流建议养成.flush的习惯
4、释放资源
流.close
3、IO流的分类
一、节点流(分为字节流、字符流)
概念:离数据源最近的流
a)、字节流:可以处理一切格式
a、1)、输入流 inputSteam 、FileInputSteam 、byteArrayInputSteam
操作 read(字节数组)
创建中间容器 byte[ ] flush = new byte[长度];
定义接受长度 int len = 0;
循环读取 while(-1!=(len=流.read(flush))){ }
操作 输出或者拷贝
a、2)、输出流 outputSteam 、FileOutputSteam 、byteArrayOutputSteam
操作 write(字节数组,0,长度)
输出
b)、字符流:只能处理纯文本文件
b、1)、输入流 Reader 、FileReader 、byteArrayReader
操作 read(字符数组)
创建中间容器 char[ ] flush = new char[长度];
定义接受长度 int len = 0;
循环读取 while(-1!=(len=流.read(flush))){ }
操作 输出或者拷贝
b、2)、输出流 Writer 、FileWriter 、byteArrayWriter
操作 write(字符数组,0,长度)
二、处理流(分为转换流、缓冲流、处理数据类型流、打印流等高级流)
作用:装饰模式、提高性能、增强功能
a)、转换流:解码与编码字符集问题的处理
1)、输入流 inputSteamReader ——>解码
2)、输出流 outputSteamWriter ——>编码
b)、缓冲流:提高性能 建议所有流都加上缓冲流提高性能
1)、输入流 bufferedInputSteam bufferedReader
2)、输出流 bufferedOutputSteam bufferedWriter
c)、处理数据类型流
1)、基本数据类型+String:必须存在才能读取 读取顺序要与写出顺序一致
1、a)、输入流 DataInputSteam ——>新增方法 read数据类型
1、b)、输出流 DataOutputSteam ——>新增方法 write数据类型
2)、引用类型
2、a)、反序列化 ObjectInputSteam ——>新增方法 readObject
2、b)、序列化 ObjecrOutputSteam ——>新增方法 writeObject
4、打印流:PrintSteam()
5、System.in(键盘输入) System.out(打印标准输出(控制台)信息) System.err(打印错误输出信息)
SetIn SetOut SetErr(重定向,用来输出到日志)
注意:以下IO流有新增方法不能使用多态:
1 byteArrayOutputSteam——>新增方法.toByteArray() 2 bufferedReader——>新增方法.readLine
3 bufferedWrite——>新增方法.newLine 4 DataInputSteam ——>新增方法 read数据类型 DataOutputSteam ——>新增方法 write数据类型
5 ObjectInputSteam ——>新增方法 readObject ObjecrOutputSteam ——>新增方法 writeObject 6 printSteam