package com.itheima.day12.file;
import java.io.File;
import java.io.IOException;
public class FileDemo1 {
/*
File类介绍 : 文件或文件夹对象
构造方法 :
1. public File (String pathname) : 根据传入的字符串路径封装File对象
2. public File (String parent, String child) : 根据传入的父级路径和子级路径来封装File对象
3. public File (File parent, String child) : 根据传入的父级路径(File类型)和子级路径来封装File对象
*/
public static void main(String[] args) throws IOException {
File f1 = new File("D:\\A.txt"); //将对象与文件(夹)关联在一起
f1.createNewFile(); //若该目录下没有A.txt文件,则创建A.txt文件
File f2 = new File("D:\\test");
//exists方法,判断有无该文件
System.out.println(f2.exists()); //trueS
A
File f3 = new File("D:\\", "test");
System.out.println(f3.exists()); //true
File f4 = new File(new File("D:\\"), "test");
System.out.println(f4.exists()); //true
}
}
注意:
public long length() : 返回文件的大小(字节数量)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * 文件对象操作, 返回正确的字节个数
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * 文件夹对象操作, 返回的是错误的字节个数
package com.itheima.day12.file;
import java.io.File;
import java.util.Date;
public class FileMethodDemo3 {
/*
File类常见方法 :
1. 判断相关
public boolean isDirectory() : 判断是否是文件夹
public boolean isFile() : 判断是否是文件
public boolean exists() : 判断是否存在
2. 获取相关
public long length() : 返回文件的大小(字节数量)
* 文件对象操作, 返回正确的字节个数
* 文件夹对象操作, 返回的是错误的字节个数
public String getAbsolutePath() : 返回文件的绝对路径
public String getPath() : 返回定义文件时使用的路径
public String getName() : 返回文件的名称,带后缀
public long lastModified() : 返回文件的最后修改时间(时间毫秒值)
*/
public static void main(String[] args) {
File f1 = new File("D:\\A.txt");
System.out.println(f1.isDirectory()); // false
System.out.println(f1.isFile()); // true
System.out.println(f1.exists()); // true
System.out.println("----------------------");
File f2 = new File("D:\\test");
System.out.println(f1.length());
System.out.println(f2.length());
System.out.println("----------------------");
File f3 = new File("A.txt");
System.out.println(f3.getAbsolutePath());
System.out.println("----------------------");
System.out.println(f1.getName());
System.out.println(f2.getName());
System.out.println(f3.getName());
System.out.println("----------------------");
long time = f1.lastModified();
System.out.println(new Date(time));
}
}
package com.itheima.day12.file;
import java.io.File;
import java.io.IOException;
public class FileMethodDemo4 {
/*
File类的创建方法和删除方法 :
public boolean createNewFile() :创建文件
public boolean mkdir() : 创建单级文件夹
public boolean mkdirs() : 创建多级文件夹
public boolean delete() : 删除文件或文件夹
- delete 方法删除文件夹, 只能删除空的文件夹.
*/
public static void main(String[] args) throws IOException {
File f1 = new File("src\\com\\itheima\\day12\\B.txt");
System.out.println(f1.createNewFile());
File f2 = new File("src\\com\\itheima\\day12\\aaa");
System.out.println(f2.mkdirs());
File f3 = new File("src\\com\\itheima\\day12\\C.txt");
System.out.println(f3.mkdirs());
System.out.println(f1.delete());
System.out.println(f2.delete());
}
}
?
注意事项
首先咱们写一个键盘录入文件路径的方法,代码如下
package com.itheima.day12.file;
import java.io.File;
import java.util.Scanner;
public class FileTest1 {
/*
需求: 键盘录入一个文件夹路径,如果输入错误就给出提示,并继续录入,直到正确为止
*/
public static void main(String[] args) {
File dir = getDir();
System.out.println(dir);
}
public static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件夹路径: ");
while (true) {
String path = sc.nextLine();
File dir = new File(path);
if (!dir.exists()) {
System.out.println("您输入的文件夹路径不存在, 请重新输入: ");
} else if (dir.isFile()) {
System.out.println("您输入的是一个文件路径, 请重新输入一个文件夹路径: ");
} else {
return dir;
}
}
}
}
?接着咱们写完整逻辑
package com.itheima.day12.file;
import java.io.File;
public class FileTest2 {
/*
需求: 键盘录入一个文件夹路径,找出这个文件夹下所有的 .java 文件
*/
public static void main(String[] args) {
//FileTest1.getDir()是一个自定义的工具类中的方法,作用是:键盘录入一个文件夹路径
File dir = FileTest1.getDir();
printJavaFile(dir);
}
/**
* 对接收到的文件夹路径进行遍历, 找出所有的.java文件
*/
public static void printJavaFile(File dir) {
// 1. 获取当前路径下所有的文件和文件夹对象
File[] files = dir.listFiles();
// 2. 对数组遍历, 获取每一个文件或文件夹对象
for (File file : files) {
// 3. 判断是否是.java文件
if (file.isFile()) {
if (file.getName().endsWith(".java")) {
System.out.println(file);
}
} else {
// 4. 代码执行到这里, 说明是文件夹
// 思路: 调用方法, 进入这个文件夹继续找.java文件
if (file.listFiles() != null) {
printJavaFile(file);
}
}
}
}
private static void method(File dir) {
// 获取当前路径下所有的文件和文件夹对象
File[] files = dir.listFiles();
// 遍历数组, 获取每一个文件或文件夹对象
for (File file : files) {
// 判断是否是文件, 并且文件的后缀名需要.java结尾
if (file.isFile() && file.getName().endsWith(".java")) {
System.out.println(file);
}
}
}
}
关于文件夹的操作常用到递归,因为文件夹里不仅有文件,还可能有文件夹