认识File
文件存储在磁盘中,而不是内存中。断电或者程序终止,文件还在。
广义的文件包括文件夹。
不能读写文件里面存储的数据,所以怎么办?
用IO流
功能
操作文件
这两种斜杠方式都可以。
相对路径不带盘符,默认在工程下,也可以用绝对路径
建议用相对路径
现在创建一个File对象,这个文件实际上不存在。
创建文件
创建文件夹
这里应为能删除空文件夹,不能删除非空文件夹。
可以删除空文件
注意是一级目录
上面的删除是可以真的删除掉。
文件搜索
需求:在D盘找到某个文件
分析:
1.拿到一级,遍历一级文件对象,判断是不是文件.
2.是文件判断是不是想要的.
3.不是文件,返回1
package com.itheima.demo2recursion;
import java.io.File;
public class FileSearchTest4 {
public static void main(String[] args) {
// 目标:完成文件搜索。找出D:盘下的QQ.exe的位置。
try {
File dir = new File("D:/");
searchFile(dir , "QQ.exe");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 搜索文件
* @param dir 搜索的目录
* @param fileName 搜索的文件名称
*/
public static void searchFile(File dir, String fileName) throws Exception {
// 1、判断极端情况
if(dir == null || !dir.exists() || dir.isFile()){
return; // 不搜索
}
// 2、获取目录下的所有一级文件或者文件夹对象
File[] files = dir.listFiles();
// 3、判断当前目录下是否存在一级文件对象,存在才可以遍历
//不为空指针是怕没有权限,对应上文注意事项第二条
//长度大于01对应第二条
if(files != null && files.length > 0){
// 4、遍历一级文件对象
for (File file : files) {
// 5、判断当前一级文件对象是否是文件
if(file.isFile()){
// 6、判断文件名称是否和目标文件名称一致
if(file.getName().contains(fileName)){
System.out.println("找到目标文件:" + file.getAbsolutePath());
Runtime r = Runtime.getRuntime();
r.exec(file.getAbsolutePath());//启动这个程序
//执行时候的异常,原因是担心路径写错.因此把异常抛给上一级
}
}else{
// 7、如果当前一级文件对象是文件夹,则继续递归调用
searchFile(file, fileName);
}
}
}
}
}