IO流:
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
分类:
- 按处理数据类型的不同,分为字节流和字符流
- 按数据流向的不同,分为输入流和输出流。(入和出是相对于内存来讲的)
- 按功能不同,分为节点流和处理流。节点流:直接操作数据源处理流:对其他流进行处理
InputStream:
语法例子:
FileInputStream fis=new FileInputStream("C://a.java");
int temp=-1;
while((temp=fis.read())!=-1){
System.out.print((char)temp);
};
OutputStream:
语法例子:
FileReader fReader =new FileReader("C://a.java");){
int temp=-1;
while((temp=fReader.read())!=-1){
System.out.println((char)temp);
read:方法重载,可以穿入一个字节数组,把数据放到数组中,
//返回当前次,读取的字节个数,如果到达文件末尾 返回-1
FileInputStream fis1 = new FileInputStream("C://a.java");){
byte[] bytes =new byte[10];
int temp=0;
while((temp=fis1.read(bytes))!=-1){
System.out.println(new String(bytes,0,temp));
字节输出流:
FileOutputStream fileOutputStream=new FileOutputStream("C://a.java",true);
//true为是否覆盖,true为不覆盖
字符输出流:
FileWriter fileWriter=new FileWriter("C://a.java",true)
同上。
缓冲流:
文件输入流:
BufferedInputStream(字节流)
BufferedReader(字符流)
文件输出流:
BufferedOutputStream(字节流)
BufferedWriter(字符流)
转换流:
转换流是指将字节流向字符流的转换。
InputStreamReader(输入流)主要是将字节流输入流转换成字符输入流
OutputStreamWriter(输出流)主要是将字节流输出流转换成字符输出流
打印流,数据流:
(了解即可):
- 打印流是输出最方便的类
- 包含字节打印流PrintStream,字符打印流PrintWriter
- PrintStream是OutputStream的子类,把一个输出流的实例传递到打印流之后,可以更加方便地输出内容,相当于把输出流重新包装一下
- PrintStream类的print()方法被重载很多次print(int i)、print(boolean b)、print(char c)
- 为了方便地操作Java语言的基本数据类型和String的数据,可以使用数据流。
- 数据流有两个类:(用于读取和写出基本数据类型、String类的数据)
- DataInputStream 和 DataOutputStream
- 分别“套接”在 InputStream 和 OutputStream 子类的流上
文件流:
File类:
- java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
- File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
- 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
- File对象可以作为参数传递给流的构造器
File使用:
File file =new File("C:\\Users\\李英杰\\Desktop\\day_02");
// 获取全路径
System.out.println(file.getAbsolutePath());
// 获取名字包括后缀
System.out.println(file.getName());
// 判断是否存在
System.out.println(file.exists());
// 判断是否是文件
System.out.println(file.isFile());
// 是否是目录
System.out.println(file.isDirectory());
// 上级路径
System.out.println(file.getParent());
// 上级对象
System.out.println(file.getParentFile());
// 删除!!!删了就没了
File file2=new File("C:\\Users\\李英杰\\Desktop\\day_02");
System.out.println(file2.exists());
// System.out.println(file2.createNewFile());
System.out.println(file2.delete());
// 文件夹创建和删除
File f3 = new File("C:\\Users\\李英杰\\Desktop\\day_02");
System.out.println(f3.exists());
f3.mkdirs();
// 删除,只会删除zrz文件夹,因为f3是zrz的文件夹对象,所以不会删除com
f3.delete();
}
}
注:mkdir只支持创建一层文件夹,mkdirs支持创建多层文件夹,递归复制文件夹用mkdirs;