Java 21 IO技术File(包含过滤器)
用于处理设备上数据的技术 设备:内存 硬盘 光盘
流 系统资源 windows系统本身就可以操作设备 各种语言就只是使用了系统平台上的这个资源
并对外提供各种语言自己的操作功能 这些功能调用的就是系统资源
使用资源 要释放
io:java中所涉及的功能在java.io包中
File:Io技术用于操作设备上数据的 而数据最常见的体现形式就是文件
先了解文件的操作:
创建 删除 存在 隐藏 获取
public class File_Test1 {
public static void main(String[] args) {
File file=new File("D\\","1.txt");
File file1=new File("C"+File.separator,"1.txt");
// File.separator 系统分割符
}
}
File 常见方法
* 1.名字 获取名字
* String getName();
* 2. 大小 获取大小
* long length();
* 3. 类型 获取类型 没有 可以自定义
* 4.路径
* String getParent();
public class File_Test2 {
public static void main(String[] args) {
File file=new File("C:\\abv\\1.txt");
String name=file.getName();
System.out.println(name);
long size=file.length();
System.out.println(size);
String way=file.getParent();
System.out.println(way);
}
}
File方法:
1.获取绝对路径
String getAbsolutePath()
2.获取路径
String getPath()
3.获取文件最后一次修改时间 要求x年x月x日 时间
long lastModified()
4.文件是否是隐藏的
boolean isHidden()
5.发现file文件对象封装的文件或文件夹时可以存在的也可以是不存在
那么怎么用file功能创建呢?
创建功能:
boolean createNewFile()
boolean mkdir() 创建文件夹
bolean mkdirs() 创建多级文件夹
删除功能:
boolean delete() 不走回收站
存在:
6.一个file对象封装的文件或者文件夹到底时候存在呢
Boolean exists()
7.getFreeSpace(); 未使用空间 getUsableSpace()已使用
public class File_Test3 {
public static void main(String[] args) throws IOException {
File file=new File("abc//");
// methodDemo1(file);
methodDemo2(file);
}
private static void methodDemo2(File file) throws IOException {
/*// 创建
boolean b=file.createNewFile();//如果文件存在则不创建
System.out.println(b);
// 存在
Boolean exist= file.exists();
System.out.println(exist);*/
// 创建文件夹 创建多级文件夹
Boolean mkdir=file.mkdir();
// directory目录
Boolean mkdirs=file.mkdirs();
// 删除文件夹 应该先删除里面的内容 再删除文件夹
System.out.println(mkdir);
}
private static void methodDemo1(File file) {
String path=file.getAbsolutePath();//获取文件对象的绝对路径 即使封装是相对的 获取的也是绝对的
String path1=file.getPath();//获取封装路径 封装什么拿什么
System.out.println(path);
System.out.println(path1);
long time=file.lastModified();
System.out.println(time);
// 毫秒值 需要转换
Date date=new Date(time);
// DateFormat dateFormat=DateFormat.getDateInstance();
// String timeString=dateFormat.format(date);
String timeString= DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.MEDIUM).format(date);
System.out.println(timeString);
boolean b=file.isHidden();
System.out.println(b);
}
}
获取文件夹中的所有文件和文件夹名称
public class File_Test4 {
public static void main(String[] args) {
// 获取文件夹中的所有文件和文件夹名称
File dir=new File("C:\\");
File[] files=dir.listFiles();//可以对文件进行操作
for (File f:files)
System.out.println(f);
/* String[] names=dir.list();//列出当前目录下的所有文件和文件夹名称包含隐藏文件
// 只能获取名称
if(names!=null)
for (String name:names)
System.out.println(name);*/
}
}
搜索D盘下所有.txt文件(不包括子文件夹)
public class File_Test5 {
public static void main(String[] args) {
// 提供路径
File dir=new File("D:\\");
// 过滤器
File[] names=dir.listFiles(new FilerByContain(".txt"));
for (File name:names)
System.out.println(name);
}
}

过滤器方法

过滤器
public class FilerByContain implements FileFilter {
private String type;
public FilerByContain(String string) {
this.type = string;
}
// 构造函数 传入类型
@Override
public boolean accept(File pathname) {
return pathname.getName().contains(type);
// 获取文件名 是否包含type
}
}
遍历指定目录下的内容 包含子目录下的内容 (递归)
递归:函数自身调用自身 函数内部又使用到了该函数功能
什么时候用
功能被重复使用 但是每一次该功能使用参与的运算的数据不同时 可以
使用时 一定要定义条件
public class File_Test7 {
public static void main(String[] args) {
File file=new File("D:\\QQ");
getFile(file);
}
private static void getFile(File file) {
File[] files=file.listFiles();
System.out.println(file);//输出目录名
for (File f :
files) {
if (f.isDirectory())//如果f是目录则递归
getFile(f);
else {
System.out.println(f);
}
}
}
}
递归 删除目录
public class File_Test8 {
public static void main(String[] args) {
File file=new File("D:\\PanData");
deleteData(file);
}
private static void deleteData(File file) {
File[] files=file.listFiles();
for (File f :
files) {
if (f.isDirectory())
deleteData(f);
else {
System.out.println(f+" "+f.delete());
}
}
file.delete();
}
}