共计 2379 个字符,预计需要花费 6 分钟才能阅读完成。
File 类和 IO 流
一.File 类
1.File 类概述和构造方法
File: 它是文件和目录路径名的形象示意
●文件和目录能够通过 File 封装成对象的
●对于 File 而言, 其封裝的并不是一个真正存在的文件, 仅仅是一个路径名而已。它能够是存在的,能够是不存在的。未来是要通过具体的操作把这个门路的内容转换为具体存在的。
办法名 | 阐明 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为形象路径名来创立新的 File 实例 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创立新的 File 实例 |
File(File parent, String child) | 从父形象路径名和子路径名字符串创立新的 File 实例 |
2. File 类创立性能
办法名 | 阐明 |
---|---|
public boolean createNewFile() | 当具备该名称的文件不存在时,创立一个由该形象路径名命名的新空文件 |
public boolean mkdir() | 创立由此形象路径名命名的目录 |
public boolean mkdirs() | 创立由此形象路径名命名的目录,包含任何必须但不存在的父目录 |
3. File 类判断和获取性能
办法名 | 阐明 |
---|---|
public boolean isDirectory() | 测试此形象路径名示意的 File 是否为目录 |
public boolean isFile() | 测试此形象路径名示意的 File 是否为文件 |
public boolean exists() | 测试此形象路径名示意的 File 是否存在 |
public String getAbsolutePath() | 返回此形象路径名的绝对路径名字符串 |
public String getPath() | 将此形象路径名转换为路径名字符串 |
public String getName() | 返回由此形象路径名示意的文件或目录的名称 |
public String[] list() | 返回此形象路径名示意的目录中的文件和目录的名称字符串数组 |
public File[] listFiles() | 返回此形象路径名示意的目录中的文件和目录的 File 对象数组 |
4. File 类删除性能
办法名 | 阐明 |
---|---|
public boolean delete() | 删除由此形象路径名示意的文件或目录 |
绝对路径和相对路径的区别:
●绝对路径: 残缺的路径名,不须要任何其余信息就能够定位它所示意的文件。例如: E:\itcast\java.txt
●相对路径: 必须应用取自其余路径名的信息进行解释。例如: myFile\java.txt
删除目录时的注意事项:
●如果一个目录中有内容(目录, 文件), 不能间接删除。应该先删除目录中的内容,最初能力删除目录
二. 递归
1. 递归
递归概述: 以编程的角度来看,递归指的是办法定义中调用办法自身的景象
递归解决问题的思路:
把一个简单的问题层层转化为一个与原问题类似的规模较小的问题来求解
递归策略只需大量的程序就可形容出解题过程所须要的多次重复计算
递归解决问题要找到两个内容:
●递归进口: 否则会呈现内存溢出
●递归规定: 与原问题类似的规模较小的问题
三.IO 字节流
1.IO 流概述和分类
IO 流概述:
●IO: 输出 / 输入 (Input/Output)
●流: 是一种抽象概念, 对数据传输的总称。也就是说数据在设施间的传输称为流,流的实质是数据传输
●IO 流就是用来解决设施间数据传输问题的
常见的利用: 文件复制; 文件上传; 文件下载
IO 流分类:
●依照数据的流向
输出流: 读数据
输入流: 写数据
●依照数据类型来粉
字节流
字节输出流; 字节输入流
字符流
字符输出流; 字符输入流
一般来说,咱们说 IO 流的分类是依照数据类型来分的
那么这两种流都在什么状况下应用呢?
●如果数据通过 Window 自带的记事本软件关上,咱们还能够读懂外面的内容,就应用字符流,
否则应用字节流。如果你不晓得该应用哪种类型的流,就应用字节流。
2. 字节流写数据
字节流形象基类
●InputStream: 这个抽象类是示意字节输出流的所有类的超类
OutputStream: 这个抽象类是示意字节输入流的所有类的超类
●子类名特点: 子类名称都是以其父类名作为子类名的后缀
FileOutputStream: 文件输入流用于将数据写入 File
●FileOutputStream(String name): 创立文件输入流以指定的名称写入文件
应用字节输入流写数据的步骤:
●创立字节输入流对象 (调用零碎性能创立了文件,创立字节输入流对象,字节输入流对象指向文件)
调用字节输入流对象的写数据办法
●开释资源(敞开文件输入流并开释与此流相关联的任何系统资源)
3. 字节流写数据的 3 种形式
办法名 | 阐明 |
---|---|
void write(int b) | 将指定的字节写入此文件输入流,一次写一个字节数据 |
void write(byte[] b) | 将 b.length 字节从指定的字节数组写入此文件输入流,一次写一个字节数组数据 |
void write(byte[ b, int off, int len) | 将 len 字节从指定的字节数组开始,从偏移量 off 开始写入此文件输入流,一次写一个字节数组的局部数据。 |
4. 字节流写数据加异样解决
finally: 在异样解决时提供 finally 块来执行所有革除操作。比如说 IO 流中的开释资源
特点: 被 finally 管制的语句 - 定会执行, 除非 JVM 退出
try{
可能出现异常的代码;
}catch(异样类名变量名){
异样的解决代码;
}finally{
执行所有革除操作:
}
5. 字节流读数据(一次读一个字节数据)
需要: 把文件 fos.txt 中的内容读取进去在控制台输入
FileInputStream: 从文件系统中的文件获取输出字节
●FileInputStream(String name): 通过关上与理论文件的连贯来创立一个 FileInputStream, 该文件由
文件系统中的路径名 name 命名
应用字节输出流读数据的步骤:
①创立字节输出流对象
②调用字节输出流对象的读数据办法
③开释资源