这里将自己学习java及其应用的一些笔记、积累分享一下,如果涉及到了文章、文字侵权,请联系我删除或调整。
一、File
1.1 概述
- 可封装一个磁盘路径字符串,路径具体包括:
文件路径,如 d:/abc
文件夹路径,如 d:/a.txt
不存在的路径,如 k:/dsa/ewq
- File 提供了对文件或文件夹的一些操作方法
- 创建对象
new File("d:/abc/a.txt")
new File("d:/abc", "a.txt")
1.2 方法
- 文件或文件夹属性
length() ——获取文件大小字节量,对文件夹无效
getName() ——获取文件名
getParent() ——获取父目录
getAbsolutePath() —— 获取完整路径(绝对路径)
getLastModified()——获取最后修改时间,毫秒值
isFile() ——判断是否是文件
isDirectory() ——判断是否是文件夹
exists() ——判断是否存在
- 创建、删除文件或文件夹
createNewFile() ——新建文件。若文件已经存在,不新建,返回false;若路径文件夹不存在,会出现异常
mkdirs() ——创建多层目录
delete() ——删除文件,或删除空目录
- 目录列表
list() —— 获得 String[] 数组,以字符串形式存放文件、目录名字,例如:
["a.txt", "b.jpg", "abc"]
listFiles() —— 获得 File[] 数组,存放文件、目录的封装对象。对文件、不存在的路径、无权进入的目录,列表方法返回 null。
1.3 练习:File属性方法测试
package IO_File测试;
import java.io.File;
import java.util.Date;
public class Test1_IO_File属性方法测试 {
public static void main(String[] args) {
// 路径变量
String path;
path = "D:\\Students.txt";// 存在的文件
// path = "D:\\JavaLearningProjects\\day01";// 存在的文件夹
// path = "D:\\tools\\feiq\\ServesDocument";// 不存在的路径
File file = new File(path);
System.out.println("名字:"+file.getName());
System.out.println("父目录"+file.getParent());
System.out.println("完整目录(绝对路径)"+file.getAbsolutePath());
System.out.println("是否存在"+file.exists());
System.out.println("是否文件"+file.isFile());
System.out.println("是否文件夹"+file.isDirectory());
System.out.println("字节量(文件夹无效)"+file.length());
System.out.println("最后修改时间"+file.lastModified());
// 用Date封装,可以按惯用格式查看时间
Date date = new Date(file.lastModified());
System.out.println("最后修改时间"+date.toString());
}
}
1.4 练习:文件与文件夹的创建与删除
package IO_File测试;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Test2_文件与文件夹的创建与删除 {
public static void main(String[] args) throws Exception {
/*
* 代码拟实现的流程:
* 新建D盘abc/aa目录;
* 新建D:/abc/aa/f1文件
* 删除f1文件
* 删除D:/abc/aa目录
*/
System.out.println("按回车执行!");
new Scanner(System.in).nextLine();
/* dir在此指代的是aa的路径,所以其操作不会删除abc */
File dir = new File("d:/abc/aa");
dir.mkdirs();// 根据file对象的构造时的路径,逐层创建多个文件夹;
// mkdir创建一层文件夹
System.out.println("多次文件夹已创建!");
System.out.println("按回车执行!");
new Scanner(System.in).nextLine();
// File(path, filename)创建的File对象路径为path,文件名字为filename
File file = new File(dir, "f1");
file.createNewFile();// 创建指定路径下指定名字的文件
System.out.println("制定路径下的文件创建!");
System.out.println("按回车执行!");
new Scanner(System.in).nextLine();
file.delete();
System.out.println("f1文件被删除");
System.out.println("按回车执行!");
new Scanner(System.in).nextLine();
dir.delete();// dir调用了delete,只删除了一层目录
System.out.println("aa文件夹被删除");
}
}
1.5 练习:目录列表
package IO_File测试;
import java.io.File;
import java.util.Arrays;
import java.util.Scanner;
public class Test3_目录列表 {
public static void main(String[] args) {
System.out.println("输入文件夹:");
String s = new Scanner(System.in).nextLine();
File dir = new File(s);
if (!dir.isDirectory()) {// 判断输入是否为文件夹路径
System.out.println("请输入正确的文件夹!");
return;
} else {
// 目录文件夹的字符串名称,本质是String[]
String[] names = dir.list();
/* 对文件、不存在的路径、无权访问的目录,不能列表 */
if (names == null) {
System.out.println("对文件、不存在的路径、无权访问的目录,不能列表");
return;
}
System.out.println(Arrays.toString(dir.list()));
// 目录文件夹的File对象,本质是File[]
File[] files = dir.listFiles();
System.out.println(Arrays.toString(dir.listFiles()));
// 遍历显示names数组信息
for (String n : names) {
System.out.println(n);// 只打印显示了文件名
}
// 遍历显示files数组信息
for (File f : files) {
System.out.println(f.getName() + "-" + f.length());
}
}
}
}
1.6 练习:获得文件夹的总大小
package IO_File测试;
import java.io.File;
import java.util.Scanner;
public class Test4_获得文件夹的总大小 {
public static void main(String[] args) {
System.out.println("输入文件夹:");
String s = new Scanner(System.in).nextLine();
File dir = new File(s);
if (!dir.isDirectory()) {// 判断输入是否为文件夹路径
System.out.println("请输入正确的文件夹!");
return;
}
long size = dirLength(dir);
System.out.println("dir目录下文件总大小为:"+size);
}
private static long dirLength(File dir) {
long sum = 0;// sum存储所有文件的length
File[] files = dir.listFiles();
if(files==null) {
System.out.println(dir);// 打印返回Null的文件或文件夹
return 0;
}
for(File f : files) {
if(f.isFile()) {// f是文件
sum+=f.length();
}else {// f是文件夹,递归调用自己
sum+=dirLength(f);
}
}
return sum;
}
}