文件和文件夹操作
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);
}
}
}