文件和文件夹操作

文件和文件夹操作

file:文件和文件夹的抽象

路径分割符

\\ 或者File.separator
在当前系统下文件路径分割符

		System.out.println(File.separator);//String
		System.out.println(File.separatorChar);//char
		String path1="src/com/file/Main.java";
		System.out.println(path1);
		//例如:范文在工程中的文件的路径
		//在工程中分隔符号
		String path11="src/com/file/Main.java";
		System.out.println(path11);
		//兼容性写法
		String path2="src"+File.separator+"com"+File.separator+"file"+
		File.separator+"Main.java";
		System.out.println(path2);
一、创建文件和文件夹

1.创建文件

		//1.文件路径
		String filePath="src/com/file/hero.txt";
		//2.根据路径 创建file文件对象
		File file=new File(filePath);
		//3.创建文件
		try {
			if(file.createNewFile()) {
				System.out.println("创建成功");
			}else {
				
				System.out.println("创建失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
2.创建文件夹
		//1.文件夹路径
		String directoryPath="src/com/file/file/hero";
		//2.创建File对象
		File dirFile=new File(directoryPath);
		//3。创建文件夹
		/*
		 * mkdir:创建某个文件夹,如果路径种的文件夹不存在,就创建失败
		 * mkdirs:创建某个文件夹,如果路径中的文件夹不存在,就会先把不存在的文件夹创建
		 */
		if(dirFile.mkdirs()) {
			System.out.println("文件夹创建成功");
		}else {
			
			System.out.println("文件夹创建失败");
		}
二 判断文件或文件夹是否存在

1.判断文件

		//1.文件路径
		String filePath="src/com/file/hero.txt";
		//2.根据路径 创建file文件对象
		File file=new File(filePath);
		if(file.exists()) {
				System.out.println("文件是存在");
		}else {
			System.out.println("文件不存在");
		}

2.判断文件夹

		//1.文件夹路径
		String directoryPath="src/com/file/file/hero";
		//2.创建File对象
		File dirFile=new File(directoryPath);
		System.out.println(dirFile.exists()?"文件夹是存在":"文件夹不存在");
三 判断是否是文件 或者文件夹

下面所有的file和dirFile跟上面的一样

		System.out.println(file.isFile()?"是文件":"是文件夹");
		System.out.println(dirFile.isDirectory()?"是文件夹":"不是文件夹");

路径

路径的相关知识:
1.绝对路径:从系统的根目录开始,到某个文件(夹)的路径
2.相对路径:从当前目录开始,到某个文件(夹)的路径
. 代表当前目录
… 代表父级目录
注意:在Java工程中,默认相对路径从当前工程的根路径算起 也就是 ./src/…

		//获取绝对路径
		System.out.println(file.getAbsolutePath());
		System.out.println(dirFile.getAbsolutePath());
		//获取相对路径
		System.out.println(file.getPath());
		System.out.println(dirFile.getPath());
		//获取文件名
		System.out.println(file.getName());
		System.out.println(dirFile.getName());
		//获取当前工程的目录 user.dir 固定写法,是工程功能的key
		System.out.println(System.getProperty("user.dir"));
		//获取文件的大小 字节数
		System.out.println(file.length());
		System.out.println(dirFile.length());
		//获取最后一次修改文件的时间  注意:获取的时间是时间数 就是从1970年1月1日0:0:0;
		//秒是10位数 毫秒是13位数 1000毫秒=1秒
		System.out.println(file.lastModified());
		System.out.println(dirFile.lastModified());

时间戳

时间戳
日期格式
yyyy:4位年份 比如:2020
yy: 2位年份 比如:20
MM: 2位月份 比如:01 02 11
M: 1位月份 比如:1 11 3 4 12
dd: 2位日期 比如:01 09 10 12
d: 1位日期 比如1 2 4 18
HH: 24小时制,并且两位小时 比如:01 23
H: 24小时制,并且1位小时 比如:1 2 9 10
hh: 12小时制 ,但是是2位小时比如:01 10
h: 12小时制 ,但是是1位小时 比如:1 2 9 10
mm: 2位分钟
m: 1位分钟
ss: 2位秒数
s: 1位秒数
SSS: 毫秒

最后修改的时间转化
		//格式化对象
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd天 HH:mm:ss.SSS");
		//获取一个时间戳
		long lastFileChange=file.lastModified();
		String str=simpleDateFormat.format(lastFileChange);
		System.out.println(str);
		//时间戳转字符串在转Date格式
		Date date=null;
		try {
					
			date=simpleDateFormat.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		System.out.println(date);
		//将Date转为时间戳
		Date nowDate=new Date();
		System.out.println(nowDate.getTime());
删除文件或文件夹
package com.file;

import java.io.File;

public class Main {

	public static void main(String[] args) {
		//创建文件
		//1.文件路径
		String filePath="src/com/file/hero.txt";
		//2.根据路径 创建file文件对象
		File file=new File(filePath);
		//创建文件夹
		//1.文件夹路径
		String directoryPath="src/com/file/file/hero";
		//2.创建File对象
		File dirFile=new File(directoryPath);
		
		//删除文件或者文件夹
		//1.删除文件
		System.out.println(file.delete()?"文件删除成功":"文件删除失败");
		//2.删除文件夹
		System.out.println(dirFile.delete()?"文件夹删除成功":"文件夹删除失败");
		//注意:当文件夹为空的时候,才能被删除
		
		//获取子文件
		File srcFile = new File("src");
		File[] srcSubFiles =srcFile.listFiles();
		for (File f : srcSubFiles) {
			System.out.println(f);
		}
		
		
		//-------------------------------------------
		//获取src下的所有子文件
		System.out.println("获取src下的所有子文件");
		getAllFiles(srcFile);
		//删除文件夹
		File fileObj=new File("src/com/lanou/file");
		deleteAllFiles(fileObj);
		
		
		
		
	
	}
	
	//封装方法 用户获取所有的子文件
	public static void getAllFiles(File file) {
		//1.获取一级子文件
		File[] files=file.listFiles();
		//2.遍历一级子文件
		for (File f : files) {
			if(f.isDirectory()) {
				//说明子文件是文件夹
				System.out.println(f);
				getAllFiles(f);
			}else {
				//说明子文件是普通文件
				System.out.println(f);
			}
		}
	}
	
	//封装方法 删除文件
	public static void deleteAllFiles(File file) {
		if (file.isFile()) {
			//如果是文件 就直接删除
			file.delete();
		} else {
			//说明是文件夹对象
			for (File f : file.listFiles()) {
				deleteAllFiles(f);
			}
			//删除文件夹
			file.delete();
		}
	}
	
}

文件过滤器

文件过滤器 本质就是遍历文件
两种
1.FileFilter
2.FilenameFilter

FileFilter
package com.filter;

import java.io.File;
import java.io.FileFilter;

public class FileFilterTest {

	public static void main(String[] args) {
		File resouceFile=new File("C:\\Users\\小江\\Desktop\\家具");
		//1.FileFilter
	
		File[] fileArray1=resouceFile.listFiles(new FileFilter() {
			//匿名类
			@Override
			public boolean accept(File pathname) {
				//返回值决定 是否把过滤到的文件放入数组 如果返回值为true机放入数组 为False则不放入
				//假设:我只需要图片
				if(pathname.getName().endsWith(".png")||pathname.getName().endsWith(".jpg")) {
					return true;
				}
				return false;
			}
		});
		for (File f : fileArray1) {
			System.out.println(f);
		}
		
	}

}

FilenameFilter
package com.filter;

import java.io.File;
import java.io.FilenameFilter;

public class FileFilterTest {

	public static void main(String[] args) {

		File[] filenameArray = resouceFile.listFiles(new FilenameFilter() {
			
			@Override
			public boolean accept(File dir, String name) {
				//dir  文件的目录,其实就是要过滤的文件目录
				//name 就是文件名,仅仅文件(夹)名字而已(不包含路径)
				System.out.println(dir);
				System.out.println(name);
				return name.endsWith(".jpg")||name.endsWith(".png");
			}
		});
		for (File f : filenameArray) {
			System.out.println(f);
		}
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值