目录
标准库:java.io.File
创建实例
// 绝对路径
File f = new File("D:/test.txt");
// 相对路径
File f2 = new File("aaa.txt");
文件系统相关操作
都是围绕File展开的
// 获取父亲
System.out.println(f.getParent());
// 获取文件名
System.out.println(f.getName());
// 获取路径
System.out.println(f.getPath());
//获取绝对路径
System.out.println(f.getAbsolutePath());
//获取化简过的路径
System.out.println(f.getCanonicalPath());
// 文件是否存在
System.out.println(f.exists());
// 是否是目录
System.out.println(f.isDirectory());
// 是否是文件
System.out.println(f.isFile());
// 创建文件
System.out.println(f.createNewFile());
// 删除文件
f.delete();
// 在程序退出时删除,一般用于临时文件
f.deleteOnExit();
// 创建目录
f.mkdir();
// 创建多级目录
f.mkdirs();
// 重命名操作
f.renameTo(f2);
文件内容相关操作
字节流(二进制)InputStream(读) / OutputStream(写) ——操作单位:字节
字符流(文本)Reader(读) / Write(写)——操作单位:字符
public class Demo2 {
public static void main(String[] args) {
// InputStream 是一个抽象类
InputStream inputStream = null;
try {
inputStream = new FileInputStream("test.txt");
// 按照字节方式读文件,一个字节一个字节读出来
while (true) {
int b = inputStream.read();
if (b == -1) {
break;
}
System.out.println(b);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
练习案例
扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件
// 根据指定的路径,对路径进行遍历,删除符合要求的文件
public class test {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要扫描的目标路径");
String rootDirPath = sc.next();
// 判定路径是否合法
File rootDr = new File(rootDirPath);
if (!rootDr.isDirectory()) {
System.out.println("您输入的路径不合法");
return;
}
// 输入要删除的文件
System.out.println("请输入要删除的文件名:");
String deleteFileName = sc.next();
// 遍历当前目录,找到所有匹配的文件
List<File> result = new ArrayList<>();
// 通过 scanDir 这个方法,把所有的 deleteFileName 匹配的文件存入 result 中
scanDir(rootDr, deleteFileName, result);
// 进行删除
for (File f: result) {
System.out.println(f.getCanonicalPath() + "该文件是否确认删除?y/n");
String choice = sc.next();
if (choice.equals("y")) {
f.delete();
System.out.println(f.getCanonicalPath() + "该文件已删除");
}
}
}
// 递归子目录
private static void scanDir(File rootDir, String deleteFileName, List<File> result) throws IOException {
// 罗列出 rootDir 下都有哪些文件
File[] files = rootDir.listFiles();
for (File f : files) {
System.out.println("扫描了文件:" + f.getCanonicalPath());
if (f.isFile()) {
if (f.getName().equals(deleteFileName)) {
result.add(f);
}
} else if (f.isDirectory()) {
scanDir(f, deleteFileName, result);
}
}
}
}
本文介绍了Java中如何使用`java.io.File`类进行文件操作,包括创建实例、获取文件信息、判断文件属性、文件的创建、删除、重命名以及目录操作。同时,展示了如何使用字节流和字符流进行文件内容的读取和写入。最后,提供了一个练习案例,演示了如何扫描指定目录,查找并删除特定名称的文件。

被折叠的 条评论
为什么被折叠?



