IO流
I——input 输入
O——Output 输出
文件
File 所有文件类的父类
创建方式
File file = new File("文件路径");
文件对象常用的方法
1.获取文件路径(绝对路径 是带盘符的) file.getAbsolutePath(); 2.获取文件名 file.getName(); 3.文件是否存在 file.exists();// 有返回true没有返回false 4.创建文件 file.createNewFile();// 此方法有异常需要抛 5.是否是文件夹 file.isDirectory();// 是文件夹返回true,否返回false file.isFile();// 是文件返回true,否返回false 6.创建文件夹 file.mkdir();
四个抽象类
- InputSteam
- OutputStream
- Reader
- Writer
InputSteam--------子类-------------》FileInputStream 文件输入流
1.读 read() // 每次读取一个字节,返回该字节的ASCII码值,当读到最后返回-1 读到数组里 read(byte[] bytes)// 把读取的字符,存在了byte[]里,返回的是实际个数。每次最多读取数组长度的个数 byte[] bytes =new byte[1024]; int len;// len为数组实际个数 while((len = fis.read(bytes))!=-1){ // 遍历数组 for(int i = 0;i<len;i++){ System.out.prin((char)bytes[i]); } } // 比如:数组长度为5,每次最多读5个,返回实际读取个数
按照传输单位划分:
InputSteam 和 OutputStream 字节流 传输的数据单位是字节
Reader 和 Writer 字符流 传输单位是字符
安保找流向划分:
输入流 外部输入到程序中,也叫“读”操作
输出流 程序中的内容输出到外部,也叫“写”操作
FileInputStream 字节输入流 // 文件对象 File file = new File("..."); // 创建输入流 FileInputStream fis = new FileInputStream(file); int len;// 记录每个字符返回的ASCII码值 while((len = fis.read()) !=-1){// 等len为-1是退出循环 // 不为-1,还有字符 // 把ASCII码值再转成字符 System.out.print((char)len); } FileOutputStream 字节输出流 write(int len) // 每次写出实际的字符 write(bytes,off,len)// bytes 数组 off是从哪个下标写出去 len每次写多少个
文件的复制
创建两个文件对象,一个源文件,一个目标文件
创建输入流对象
创建输出流对象
每读一个字符 写出去
关闭流
try{ }finally{ if(非空判断) file.close(); }
总结
处理字节流 // 应用于图片、英文文章、视频等大型字节文件 1.InputStream 子类:FileInputStream 2.OutputStream 子类:FileOutputStream 处理字符流 // 专门处理 纯文本文件(汉字文章等) 1.Reader 子类:FileReader 2.Writer 子类:FileWriter