我们通过Io是进行的对文件的读写操作。但是有时候我们需要直接对文件进行操作。Java中提供了File类。可以对文件或文件夹进行操作
1.file类的基本使用:
public class FileDemo01 {
public static void main(String[] args) {
File file = new File("./text/file.txt");
System.out.println("文件名称" + file.getName());
System.out.println("文件的相对路径" + file.getPath());
System.out.println("文件的据对路径" + file.getAbsolutePath());
System.out.println("文件的父路径" + file.getParent());
System.out.println(file.canRead() ? "文件可读" : "文件不可读");
System.out.println(file.canWrite() ? "文件可写" : "文件不可写");
System.out.println(file.isFile() ? "是一个文件" : "不是一个文件");
System.out.println("文件的大小" + file.length()+"字节");
System.out.println("最近文件修改的时间" + file.lastModified());
}
}
Output
/*
文件名称file.txt
文件的相对路径.\text\file.txt
文件的据对路径D:\idea work\project03\.\text\file.txt
文件的父路径.\text
文件可读
文件可写
是一个文件
文件的大小4192
最近文件修改的时间1619257830383
*/
2.遍历操作
2.1遍历某个目录下的所以文件
public class FileDemo02 {
public static void main(String[] args) {
File file = new File("./text");
if (file.isDirectory()){
String fileName[]=file.list();
for (String s : fileName) {
System.out.println(s);
}
}else {
System.out.println("不是文件目录");
}
}
}
OutPut:
/*
file.txt
writer.text
writer2.text
writer3.text
*/
2.2变量某个目录下的特定类型的文件(需要使用FilenameFilter接口中的accept方法)
public class FileDemo {
public static void main(String[] args) {
File file = new File("./src/com/package04");
if (file.isDirectory()){
//1.表达式
String fileName[]=file.list(((dir, name) ->name.endsWith(".java") ));
//2.创建一个过滤器类实现FilenameFilter接口
// String fileName[]=file.list(new Fil(".java"));
for (String s : fileName) {
System.out.println(s);
}
}else{
System.out.println("不是文件目录");
}
}
}
class Fil implements FilenameFilter{
String str;
Fil(String str){
this.str=str;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(str);
}
}
/*OutPut:
Example.java
Excepations.java
ExceptionDemo.java
ExceptionDemo2.java
...
Process finished with exit code 0
*/
<br />** 2.3遍历指定目录下的所有文件和子目录中的文件(方法的递归)**<br />
public class FileDemo03 {
public static void main(String[] args) {
File file = new File("./text");
fileName(file);
}
public static void fileName(File file){
File[]files=file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()){//再次判断文件是不是文件夹
fileName(file1);
}
// System.out.println(file1.getAbsolutePath());//获得文件的绝对路径
System.out.println(file1);
}
}
}
/*
Output:
.\text\file.txt
.\text\sub\file.txt
.\text\sub
.\text\sub2\file.txt
.\text\sub2
.\text\writer.text
.\text\writer2.text
.\text\writer3.text
*/
3.文件删除
删除目录和目录下的文件和文件夹(递归)
public class FileDemo04 {
public static void deleFile(File file){
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()){
deleFile(file1);
}
file1.delete();//如果是文件则删除
}
//同时在删除文件夹
file.delete();
}
public static void main(String[] args) {
File file = new File("./lib");
deleFile(file);
}
}