视频链接:黑马Java:File概述
一,浅谈file
二,构造方法
public class FileDemo {
public static void main(String[] args) {
//1,根据字符串表示的路径,变成File对象
String str="C:\\Users\\name\\Desktop\\a.txt";
File f1=new File(str);
System.out.println(f1);
//2,父级路径:C:\Users\name\Desktop
//子级路径:a.txt
String parent="C:\\Users\\name\\Desktop";
String child="a.txt";
File f2=new File(parent,child);
System.out.println(f2);
//3,把一个File表示的路径和String表示的路径进行拼接
File parent2=new File("C:\\Users\\name\\Desktop");
String child2="a.txt";
File f3=new File(parent2,child2);
System.out.println(f3);
}
}
三,成员方法
1,判断和获取
1,length返回文件的大小(字节数量)
细节1:这个方法只能获取文件的大小
单位是字节。如果单位我们要是M、G,可以不断地除以1024
细节2:这个方法无法获取文件夹大小
如果我们要获取一个文件夹的大小,需要把这个文件夹里面的所有文件大小都累加
2,getName 获取名字
细节1:文件(a.txt)
a 文件名
txt 后缀名、拓展名
细节2:文件夹
返回的就是文件夹的名字
2,创建和删除
1,createNewFile
细节1:如果当前路径表示的文件是不存在的,则创建成功,返回true
如果当前路径是存在的,则创建失败,返回false
细节2:如果父级路径是不存在的,那么方法会有异常IOException
细节3:createNewFile方法创建的一定是文件,如果路径中不包含后缀名,
则创建一个没有后缀的文件
2,mkdir
细节1:windows当中路径是唯一的,如果当前路径已经存在,则创建失败,返回false
细节2:mkdir方法只能创建单级文件夹,无法创建多级文件夹
3,mkdirs
细节:既可以创建单级的,又可以创建多级的文件夹
4,delete
细节:
如果删除的是文件,则直接删除,不走回收站
如果删除的是空文件夹,则直接删除,不走回收站
如果删除的是有内容的文件夹,则删除失败
3,获取和遍历
四,综合练习
1,题目
编写一个Java程序,列出指定目录中的所有文件和子目录。
import java.io.File;
public class FileExercise {
public static void main(String[] args) {
File directory = new File("C:\\YourDirectoryPath");
listFilesAndDirectories(directory);
}
public static void listFilesAndDirectories(File directory) {
if (directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
System.out.println("目录:" + file.getName());
} else {
System.out.println("文件:" + file.getName());
}
}
}
} else {
System.out.println("指定路径不是一个目录。");
}
}
}
2,题目
编写一个Java程序,计算指定目录中的文件数量。
import java.io.File;
public class FileExercise {
public static void main(String[] args) {
File directory = new File("C:\\YourDirectoryPath");
int fileCount = countFiles(directory);
System.out.println("文件数量:" + fileCount);
}
public static int countFiles(File directory) {
if (directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
int count = 0;
for (File file : files) {
if (file.isFile()) {
count++;
}
}
return count;
}
}
return 0;
}
}
3,题目
编写一个Java程序,删除指定目录及其所有子目录和文件。
import java.io.File;
public class FileExercise {
public static void main(String[] args) {
File directory = new File("C:\\YourDirectoryPath");
deleteDirectory(directory);
}
public static void deleteDirectory(File directory) {
if (directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
deleteDirectory(file);
} else {
file.delete();
}
}
}
directory.delete();
} else {
System.out.println("指定路径不是一个目录。");
}
}
}