File 类
File:
1.可以操作文件
2.可以操作文件夹
3.可以操作文件的路径
File的静态成员变量
获取路径分隔符 static String pathSeparator
例如:
String pathseparator = File.pathSeparator;
System.out.println(pathseparator);
不同平台下获取的路径分隔符不同
Mac系统下:路径分隔符 : (冒号)
Windows系统下:路径分隔符 ; (分号)
获取名称分隔符 static String separator
例如:
String separator = File.separator;
System.out.println(separator);
不同平台下获取的名称分隔符不同
Mac系统下:名称分隔符 /
Windows系统下:名称分隔符 \
构造方法
构造方法1:File(String pathname)
// 使用绝对路径
File file = new File("/Users/lanou/Desktop/Test");
System.out.println(file);
// 判断该路径是否存在
boolean b1 = file.exists();
System.out.println(b1);
// 使用相对路径 参照物是当前工程根目录
File file1 = new File("src/dp.txt");
// 打印绝对路径
// /Users/lanou/eclipse-workspace/sh-day-023/src
System.out.println(file1.getAbsolutePath());
boolean b2 = file1.exists();
System.out.println(b2);
绝对路径就是硬盘上的路径并且这个路径是唯一的
相对路径是有参照物的
构造方法2:File(String parent, String child)
String parent = "/Users/lanou/Desktop";
String child = "Test";
File file2 = new File(parent, child);
boolean b3 = file2.exists();
System.out.println(b3);
构造方法3:File(File parent, String child)
File f = new File(parent);
String child = "Test";
File file3 = new File(f, child);
System.out.println(file3.exists());
创建功能
创建文件:public boolean createNewFile()
// 该方法只能创建文件 不给后缀也是创建文件
File file = new File("/Users/lanou/Desktop/Test/haha.txt");
boolean b1 = file.createNewFile();
System.out.println(b1);
创建文件方法,如果方法已经存在不会重复创建,并返回false
创建文件夹(带不带后缀创建出来的都是文件夹):
public boolean mkdir()
public boolean mkdirs()
File file2 = new File("/Users/lanou/Desktop/Test/x/y/z");
boolean b3 = file2.mkdir();
boolean b3 = file2.mkdirs();
System.out.println(b3);
删除功能
删除文件:public boolean delete()
// 如果文件下没有子文件夹可以删除
File file = new File("/Users/lanou/Desktop/Test/b");
boolean b1 = file.delete();
System.out.println(b1);
注意:删除需谨慎不走回收站
判断功能
判断是否是文件夹:public boolean isDirectory()
判断是否是文件:public boolean isFile()
判断文件是否存在:public boolean exists()
File file = new File("/Users/lanou/Desktop/Test/b");
boolean b1 = file.isDirectory();
boolean b2 = file.isFile();
boolean b3 = file.exists();
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
获取功能
获取路径:public String getPath()
// 获取路径(跟toString方法一样输出路径不管文件存在与否)
File file = new File("/Users/lanou/Desktop/Test/www.txt");
String path = file.getPath();
System.out.println(path);
获取文件名字:public String getName()
String name = file.getName();
System.out.println(name);
获取文件长度:public long length()
// 获取文件占多少字节 英文一个字节 中文三个字节
long length = file.length();
System.out.println(length);
获取父级路径:public File getParentFile()
File parentFile = file.getParentFile();
System.out.println(parentFile);
File file = new File("/Users/lanou/Desktop/Test");
获取该路径下所有文件及文件夹的名字(一层):public String[] list()
String[] list = file.list();
for (String string : list) {
System.out.println(string);
}
获取该路径下文件的全路径(一层):public File[] listFiles()
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
System.out.println(file2);
}
遍历打印Test文件夹下所有文件:
public static void fun(File file) {
File[] listFiles = file.listFiles();
for (File file2 : listFiles) {
if (file2.isDirectory()) {
fun8(file2);
} else {
System.out.println(file2.getName());
}
}
}
public static void main(String[] args) throws IOException {
File file = new File("/Users/lanou/Desktop/Test");
fun(file);
}
文件类功能练习
从控制台输入一个字符串 该字符串是文件夹路径
1.计算这个文件夹的大小
2.删除这个文件夹
public static File getDir() {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入一个文件夹的路径");
String path = scanner.nextLine();
File file = new File(path);
if (!file.exists()) {
System.out.println("你输入的路径不存在 重新输入");
} else if (file.isFile()) {
System.out.println("你输入的是个文件 重新输入");
} else {
return file;
}
}
}
public static long getDirLengthFile(File file) {
long length = 0;
File[] listFiles = file.listFiles();
for (File subFile : listFiles) {
if (subFile.isFile()) {
length += subFile.length();
} else {
length += getDirLengthFile(subFile);
}
}
return length;
}
public static void deleteDir(File file) {
File[] listFiles = file.listFiles();
for (File subFile : listFiles) {
if (subFile.isFile()) {
subFile.delete();
} else {
deleteDir(subFile);
}
}
file.delete();
}
public static void main(String[] args) {
File file = getDir();
deleteDir(file);
File dir = getDir();
long length = getDirLengthFile(dir);
System.out.println(length);
}