File类
文件和目录路径名的抽象表示形式
-
静态成员变量
static String separator 名称分隔符
static String pathSeparator 路径分隔符 -
构造方法
public File(String pathname) pathname文件路径名
public File(String parent,String child) 父路径名 子路径名
public File(File parent,String child) 通过父文件对象和子文件名称构造文件对象
File的相关属性功能:
- 取得文件名 public String getName()
- 取得文件路径 public String getPath()
- 得到绝对路径名 public String getAbsolutePath()
- 得到父文件夹名 public String getParent()
- 判断文件是否隐藏 public boolean isHidden()
- 判断文件是否存在 public boolean exists()
- 判断文件是否可写 public boolean canWrite()
- 判断文件是否可读 public boolean canRead()
- 判断是否是目录 public boolean isDirectory()
- 判断是否是文件 public boolean isFile()
- 是否是绝对路径名称 public boolean isAbsolute()
- 文件最后的修改时间 public long lastModified()
- 文件的大小 public long length()
代码示例:
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Task01 {
public static void main(String[] args) {
// 封装文件路径
File file = new File("E:\\练习\\mygames.txt");
//取得文件名 public String getName()
System.out.println(file.getName());//mygames.txt
//取得文件路径 public String getPath()
System.out.println(file.getPath());//E:\练习\mygames.txt
//得到绝对路径名 public String getAbsolutePath()
System.out.println(file.getAbsolutePath());//E:\练习\mygames.txt
//得到父文件夹名 public String getParent()
System.out.println(file.getParent());//E:\练习
//判断文件是否隐藏 public boolean isHidden()
System.out.println(file.isHidden());//false
//判断文件是否存在 public boolean exists()
System.out.println(file.exists());//true
//判断文件是否可读 public boolean canRead()
System.out.println(file.canRead());//true
//判断是否是目录 public boolean isDirectory()
System.out.println(file.isDirectory());//false
//判断是否是文件 public boolean isFile()
System.out.println(file.isFile());//true
//是否是绝对路径名称 public boolean isAbsolute()
System.out.println(file.isAbsolute());//true
//文件最后的修改时间 public long lastModified()
System.out.println(file.lastModified());//1573723946646
//文件的大小 public long length()
System.out.println(file.length());//0
Date date = new Date(1573723946646L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");
String dateStr = sdf.format(date);
System.out.println(dateStr);//2019-11-318 17:32:26
}
}
文件的创建
public boolean createNewFile() 若文件不存在则创建新文件
public boolean mkdir() 创建目录
public boolean mkdirs() 创建目录及不存在的父目录
文件的删除
public boolean delete() 删除文件及空目录
文件的重命名
public boolean renameTo(File dest) 重命名为dest
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 文件的创建
* boolean createNewFile() : 若文件不存在则创建文件
* 注意:
* 1.该方法会抛出一个IOException异常,该异常是一个编译时异常,必须处理
* 2.该方法创建的是文件,而不是文件夹
* 3.如果文件已经创建,就不会再创建了,返回false
* boolean mkdir()
* 注意:
* 1.该方法没有异常
* 2.该方法创建的是文件夹
* 3.如果文件已经创建,就不会再创建了,返回false
* boolean mkdirs()
* 注意:
* 1.该方法没有异常
* 2.该方法创建的是连续的文件夹
* 3.如果文件已经创建,就不会再创建了,返回false
* 记住:无论做任何的操作,第一步都必须封装文件路径
*
* * 文件的删除
* boolean delete()
* 删除此抽象路径名表示的文件或目录。
* 注意:
* 1.既可以删除文件,也可以删除文件夹
* 2.删除文件夹,文件夹必须是空的
* 那么如何删除带内容的文件?
* 1.逐级删除 太麻烦
* 2.递归删除
*/
public class Task02 {
public static void main(String[] args) {
File file = new File("D:\\iotest");
//1、在本地磁盘D盘中创建一个iotest文件夹
System.out.println(file.mkdir());//true
//2、在文件夹中创建一个以自己名字的拼音组成的文件名
File file2 = new File("D:\\iotest\\dengyanjian.txt");
try {
System.out.println(file2.createNewFile());//true
} catch (IOException e) {
e.printStackTrace();
}
//3、获取创建的这个文件的最后修改日期并打印到控制台
File file3 = new File("D:\\iotest\\dengyanjian.txt");
System.out.println(file3.lastModified());//1573729616560
Date date = new Date(1573729616560L);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月DD日 HH时mm分ss秒");
String format = sdf.format(date);
System.out.println(format);//2019年11月318日 19时06分56秒
//4、将创建的这些文件和文件夹全部删除。
//先删文件
System.out.println(file2.delete());//true
//再删空文件夹
System.out.println(file.delete());//true
}
}
import java.io.File;
/*
* .修改功能
* public boolean renameTo(File dest) 重命名为dest
*/
public class Task03 {
public static void main(String[] args) {
//在本地磁盘上,选择某个有内容的txt文件,将文件 名修改为test.txt
File file = new File("E:\\a\\aaa.txt");
File file2 = new File("E:\\a\\test.txt");
boolean result = file.renameTo(file2);
System.out.println(result);//true
//计算修改名字后的文件的大小,文件的最后修改日 期、文件的名称及文件的父级目录
System.out.println(file2.getAbsolutePath());//
System.out.println(file2.length());//12 hello word
System.out.println(file2.lastModified());//1573731052176
System.out.println(file2.getName());//test.txt
System.out.println(file2.getParent());//E:\a
//删除这个文件
System.out.println(file2.delete());//true
}
}
文件的遍历
-
public String[] list() 返回file下的文件和目录名称(字符串)
public File[] listFiles() 返回file下的文件和目录(文件)
public String[] list(FilenameFilter filter) 根据filter过滤返回file下文件和目录名称
public File[] listFiles(FileFilter filter) 根据filter过滤返回file下文件和目录遍历统计:
import java.io.File;
import java.io.FileFilter;
/*
* 统计某个文件夹下面所有txt文件的个数
* E:\My notebook
*/
public class Task04 {
public static void main(String[] args) {
File file = new File("E:\\My notebook");
getTxtNember(file);
getTxtNember2(file);
}
//方法一
public static void getTxtNember(File srcfile) {
int number = 0;
File[] files = srcfile.listFiles();
for (File file : files) {
String txtname = file.getName();
if (file.isFile() && txtname.endsWith(".txt")) {
number++;
}
}
System.out.println(number);//7
}
//方法二
public static void getTxtNember2(File srcfile) {
File[] files = srcfile.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().endsWith(".txt") && file.isFile();
}
});
System.out.println(files.length); //7
}
}
遍历打印:
import java.io.File;
import java.util.Scanner;
/*
* 从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
*/
public class Task05 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.print("请输入:");
String s = input.next();
File file = new File(s);
try {
showJava(file);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void showJava(File srcfile) {
// 判断是否为空
if (srcfile == null) {
throw new NullPointerException("你再传null给我试一下");
}
// 获取到文件夹路径里面所有的文件或者文件夹
File[] files = srcfile.listFiles();
// 遍历文件夹或者文件数组,获取到每一个文件或者文件夹
for (File f : files) {
// 判断该File是文件还是文件夹
if (f.isDirectory()) {
// 是文件夹
showJava(f);
} else {
String fileName = f.getName();
if (fileName.endsWith(".java")) {
System.out.println(fileName);
}
}
}
}
}
遍历删除:
import java.io.File;
import java.util.Scanner;
/*
* 从键盘接收一个文件或者文件夹路径,删除该文件夹或者文件
*
*/
public class Task07 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner input = new Scanner(System.in);
System.out.print("请输入:");
String s = input.next();
//把输入的字符串给到file
File file = new File(s);
//判断输入是否为null 抛异常
try {
showJava(file);
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void showJava(File srcfile) {
// 判断是否为空
if (srcfile == null) {
throw new NullPointerException("你再传null给我试一下");
}
// 获取到文件夹路径里面所有的文件或者文件夹
File[] files = srcfile.listFiles();
// 遍历文件夹或者文件数组,获取到每一个文件或者文件夹
if (files != null) {
遍历文件夹或者文件数组,获取到每一个文件或者文件夹
for (File f : files) {
判断该File是文件还是文件夹
if (f.isDirectory()) {
// 是文件夹
showJava(f);
} else {
// 是文件 删除文件
System.out.println(f.delete() + "已经删除了:" + f.getName() + "文件");
}
}
}
// 删除文件夹
System.out.println(srcfile.delete() + "已经删除了" + srcfile.getName() + "文件夹");
}
}