文件类:
    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("    ");
        }
    }
}
原文地址:https://www.cnblogs.com/F9801/p/9036828.html