Java基础之File类的使用 与查找相应文件实例

下面的话 从代码中找答案

输入路径 路径的 三种表示方式
判断文件是否存在
创建文件
判断是否是文件夹

文件夹的删除 (空文件夹可删 文件夹不为空 删除失败)
列出文件夹内所有文件名(仅是当前目录 不能更深一层)
列出所有的文件 以file对象返回 仅当前目录 有多种属性方法 可获得长度 名字 路径 等等等
其中最后修改时间 看下列截图 需要修改格式
加粗样式
在这里插入图片描述
其中还有相对路径(少)和绝对路径(多)的区别
在这里插入图片描述
创建文件夹
接着那个f4 那个 mkdirs mkdir
如果路径是多重的 就好多 杠 若中间的子目录也没有 也需要创建 就是不止要创建一个文件夹 那么就用mkdirs
如果就只创建一个文件夹 用mkdir (不管是不是有好多子目录 )

移动文件
重命名文件

文件过滤 显示 如图
在这里插入图片描述
用刚学的Lambda表达式 书写上图
在这里插入图片描述
整体代码

package com.vince;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * File类的使用
 * @author vince
 * @description
 */
public class FileDemo {

	public static void main(String[] args) {
		//File类表示一个文件或目录
		// "C:\\test\\vince.txt"
		//"C:/test/vince.txt"
		File f1 = new File("c:"+File.separator+"test"+File.separator+"vince.txt");
		if(!f1.exists()){ //判断文件是否存在
			try {
				f1.createNewFile(); //创建文件
				System.out.println("文件创建成功");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		//f1.isFile() :是否为文件 
		System.out.println("是否为文件夹:"+f1.isDirectory());
		
		File f2 = new File("c:\\test\\my");
		boolean b = f2.delete();
		System.out.println(b);
		
		String[] names = f2.list(); //列出当前目录下的所有文件名
		System.out.println(Arrays.toString(names));
		
		File[] fs = f2.listFiles();//列出当前目录下的所有文件,以file对象返回
		for(File f: fs){
			System.out.println("length="+f.length());
			System.out.println("name="+f.getName());
			System.out.println("相对路径="+f.getPath());
			System.out.println("绝对路径="+f.getAbsolutePath());
			System.out.println("是否为隐藏文件="+f.isHidden());
			System.out.println("是否可读文件="+f.canRead());
			Date date = new Date(f.lastModified());
			DateFormat df = new SimpleDateFormat("HH:mm:ss");
			System.out.println("文件最后修改的时间="+df.format(date));
			System.out.println("---------");
			
		}
		//相对路径与绝对路径的区别
		File f3 = new File("temp.txt");
		System.out.println(f3.getPath());
		System.out.println(f3.getAbsolutePath());
		
		//
		File f4 = new File("c:\\test\\dabin1");
		f4.mkdirs();
		//重命名与移动文件
		//f4.renameTo(new File("c:\\test\\dabin1"));;
		f4.renameTo(new File("c:\\dabin1"));
		
		
		File f5 = new File("c:\\test\\my");
//		File[] files = f5.listFiles(new FileFilter() {
//			@Override
//			public boolean accept(File pathname) {
//				return pathname.getName().endsWith(".txt");
//			}
//		});
		File[] files = f5.listFiles((pathname)->pathname.getName().endsWith(".txt"));
		System.out.println("---------");
		for(File f:files){
			System.out.println(f.getName());
		}
	}

}

1、File类的基本概念
File类:表示文件和目录路径名的抽象表示形式。
File类可以实现文件的创建、删除、重命名、得到路径、创建时间等等,是唯一与文件本身有关的操作类。

2、File类的操作方法
在这里插入图片描述
2、File类的操作方法:
在这里插入图片描述

查找以.jpg结尾的文件 下面就是一个递归方法
给的文件路径 可能是目录 即文件夹
所以需要递归 是目录的话 就进去看看 找出来相应的文件
但注意是否为空 为空即return
如果给的文件名是一个对象 一个确确实实的文件 则判断是以什么结尾的 注意先全部转成小写的
这样输出

package com.vince;

import java.io.File;

/**
 * 在指定的目录中查找文件
 * @author vince
 * @description
 */
public class FileDemo2 {

	public static void main(String[] args) {
		findFile(new File("C:\\Users\\vince\\Downloads"),".jpg");//路径自己输
	}
	
	//查找文件的方法
	private static void findFile(File target,String ext){
		if(target==null)return;
		//如果文件是目录
		if(target.isDirectory()){
			File[] files = target.listFiles();
			if(files!=null){
				for(File f: files){
					findFile(f,ext);//递归调用 
				}
			}
		}else{
			//此处表示File是一个文件
			String name = target.getName().toLowerCase();
			//System.out.println(name);
			if(name.endsWith(ext)){
				System.out.println(target.getAbsolutePath());
			}
		}
	}

}

接下来的目录
1、File类
2、字节流
3、字符流
4、字节字符转换流
5、缓冲流
6、打印流
7、对象流
8、字节数组流
9、数据流
10、字符串流、管道流、合并流
11、RandomAccessFile
12、Properties文件操作
13、文件压缩与解压缩
14、装饰者模式
15、常见字符编码
16、New IO

猜你喜欢

转载自blog.csdn.net/C_time/article/details/89408176