流
文件类: java.io.File 基本方法; exists(): 判断这个文件是否存在 mkdir(): 创建文件夹路径(只能建一层) mkdirs(): 创建文件夹路径 createNewFile(): 创建文件 delete(): 删除文件 renameTo(): 对文件进行更名操作(也可以移动文件) geName(): 获取文件名称 getPath(): 获取文件路径 length(): 获取文件大小 isDirectory(): 判断这个东西是不是一个目录 isFile(): 判断这个东西是不是一个文件 listFiles(): 获取当前这个路径下面所有的文件和文件夹 IO流(IN / OUT) 什么是流 流, 可以看成是一根管道, 用来读取文件的数据 原始的数据都是用过二进制的形式来进行数据的传输, 文件---10111010-->程序 文件<--10111010---程序 流的分类 按照数据流的方向 输入流(Input), 输出流(Output) 输入流: 从文件往程序走数据 输出流: 从程序往文件走数据 按照处理数据的单位不同: 八大数据类型所占字节数: byte(1), short(2), int(4), long(8) float(4), double(8) boolean(1) char(2) 字节流(以stream结尾的), 字符流(以Reader, Writer结尾的) 字节流: 一个字节占8位, 以一个字节为单位读数据 字符流: 一个字符占两个字节, 以一个字符为一个单位 按照功能分: 节点流, 处理流 节点流: 只有一个根管道套在文件上进行传输 处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层 JDK提供的流 提供了四个基本抽象类: InputStream, OutputStream, Reader, Writer InputStream的基本方法: int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回 int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理) int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节数 close(): 关闭资源 OutputStream的基本方法: void write(int b) void write(byte[] b) int wirte(byte[] buffer, int offset, int length) close() flush(): 将缓冲区中的文件全部写出 在使用流的时候的一个良好的习惯, 先flush, 再close Reader的基本方法: int read() int read(char[] c) int read(char[] c, int offset, int length) close() Writer的基本方法: void write() void write(char[] c) void write(char[] c, int offset, int length) // 直接写一个字符串出去, 字符串里面的有一个方法s.toCharArray(), 查API void write(String s) void write(String s, int offset, int length) close() flush() 文件流(字节流, 字符流) 缓冲流 转换流--->字节-字符 数据流--->八大数据类型 Print流--->System.out.println(); Object流--->
package test2; import java.io.File; import java.io.IOException; public class Test { public static void main(String[] args) { //File file = new File("f:/abc/def/ghi/t1.txt"); File file2 = new File("f:/abc"); /* if (file.exists()) { System.out.println("文件存在 !"); } else { System.out.println("不存在 !"); } boolean b = file.mkdirs(); // 创建一个目录 System.out.println(b);*/ /* try { boolean b2 = file.createNewFile(); System.out.println(b2); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ /* boolean b3 = file.delete(); System.out.println(b3);*/ /* boolean b4 = file.renameTo(file2); System.out.println(b4);*/ // b kb mb gb tb /* System.out.println(file2.getName()); System.out.println(file2.getPath()); System.out.println(file2.length()); System.out.println(file2.isFile()); System.out.println(file2.isDirectory());*/ /* File[] files = file2.listFiles(); for (File file : files) { System.out.println(file.getName()); }*/ File file = new File("F:\\20180315\\0513 集合作业 流\\test"); System.out.println(file.getName()); if (file.exists()) { print(file.listFiles(), 1); } else { System.out.println("文件不存在 !"); } } public static void print(File[] files, int len) { for (File file : files) { /* if (file.isDirectory()) { p(len); System.out.println(file.getName()); print(file.listFiles(), len + 1); } else { p(len); System.out.println(file.getName()); }*/ p(len); System.out.println(file.getName()); if (file.isDirectory()) { print(file.listFiles(), len + 1); } } } public static void p(int len) { for (int i = 0; i < len; i++) { System.out.print(" "); } } }