b站 Java教程:https://www.bilibili.com/video/BV18J411W7cE?p=272
1 File
- 在java.io包下,使用时需要导包
- 继承了Comparable接口
- 是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来要通过具体的操作将这个路径的内容转换为具体存在
- 构造方法:
- 父路径应该是目录
- File 是文件和路径名的抽象表示,即用于构造的文件和路径名可以不存在;
- File类的创建功能
- 这三种方法均是如果文件/目录/多级目录不存在,就创建并返回true;否则返回false;
- 创建文件会抛出异常
- 如果想要创建文件,却调用了创建目录的方法,会创建成目录;此时如果重新改为调用创建文件的方法,依然会返回false,因为一级目录下不能同时创建同名的目录和文件。
- File类的判断和获取功能
- File类的删除功能
- 如果创建文件的上级目录不存在,则会抛出异常
- 如果删除的目录下有内容,目录不能直接删除;要先将目录下的内容删除后再删除相应目录
2 递归
- 以编程的角度看,递归指的是方法定义中调用方法本身的现象
- 将一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
- 递归解决问题需要明确两个内容
- 递归出口:否则会出现内存溢出
- 递归规则:与原问题相似的规模较小的问题
3 遍历目录
-
import java.io.File; public class FileDiguiDemo { public static void main(String[] args) { File f = new File("E:\\develop"); getAllFilePath(f); } public static void getAllFilePath(File srcFile){ File[] fileArray = srcFile.listFiles(); if(fileArray != null){ for(File file : fileArray){ if(file.isDirectory()){ getAllFilePath(file); }else{ System.out.println(file.getAbsolutePath()); } } } } }
4 字节流
- IO流概述
- IO:输入/输出(Input/Output)
- 流:是一种抽象概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输
- IO流就是用来处理设备间的数据传输问题的。常用:文件复制、文件上传、文件下载
- IO流分类
- fos.write(97):文件中显示的是字符‘a’
- 使用字节输出流写数据:
- 创建字节输出流对象(调用系统功能创建了文件,创建了字节输出流对象,让字节输出流对象指向文件)
- 调用字节输出流对象的写数据方法
- 释放资源(关闭此文件输出流并释放与此流相关联的任何系统资源)
- 字节流写数据的三种方式
- FileOutputStream()方法的参数是String类型或者是File类型,其实底层的实现都是相同的
- write(byte[] b, int off, int len):指定的字节数组中,从偏移量off开始,写len长度的字节
- 字节流写数据的问题
- 如何实现换行
- 不同的操作系统对换行符的识别不同:windows:\r\n;linux:\n;mac:\r
- IDEA可以识别多种换行符
- 如何实现追加写入
- public FileOutputStream(String name, boolean append):创建文件输出流以指定的名称写入文件;如果第二个参数为true,则字节将写入文件的末尾而不是开头
- 如何实现换行
- 字节流写数据加异常处理
- 以上代码,如果执行写入数据抛出异常后,资源关闭就不会被执行。因此:
- 字节流读数据
- 如果读取到文件末尾,则read()方法的返回值是-1;
5 复制文本文件
6 字节流读数据
- 返回的len是读取到的字节的长度
- 当读到文件末尾时,返回-1