一.File类相关的API的练习题
1.
需求:
在当前模块下的aaa文件夹中创建一个a.txt文件
import java.io.File;
import java.io.IOException;
public class file {
public static void main(String[] args) throws IOException {
File f = new File("C:\\Users\\21566\\IdeaProjects\\untitled6");
File Package = new File(f, "\\aaa");
System.out.println(Package.mkdirs());
File txt = new File(Package, "a.txt");
System.out.println(txt.createNewFile());
}
}
2.
需求:
定义一个方法找某个文件夹,是否有以avi结尾的电影(暂时不需要考虑子文件夹)
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class file {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要查询的文件夹路径:");
File f = new File(sc.next());
File[] files = f.listFiles();
for (File file : files) {
JudgeAvi(file);
}
}
//专门写的JudgeAvi方法判断并输出avi文件
private static boolean JudgeAvi(File file) {
if (file.getName().endsWith(".avi")) {
System.out.println(file);
return true;
}
return false;
}
}
3.
需求:
找到电脑中所有以avi结尾的电影(需要考虑子文件夹)
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class file {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要查询的文件夹路径:");
File f = new File(sc.next());
SearchAvi(f);
}
//因为在这个方法中只需要调用JudgeAvi和JudgeDirectory两个方法就足够了,所以不需要返回值
private static void SearchAvi(File f) {
File[] files = f.listFiles();
for (File file : files) {
JudgeAvi(file);
JudgeDirectory(file);
}
}
//专门写的JudgeAvi方法判断并输出avi文件
private static boolean JudgeAvi(File file) {
if (file.getName().endsWith(".avi")) {
System.out.println(file);
return true;
}
return false;
}
private static File JudgeDirectory(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
//不断遍历文件夹中的内容
for (File file1 : files) {
//将每一个搜寻到的文件夹中的文件与.avi后缀匹配
JudgeAvi(file1);
//使用递归的思想反复查询文件夹之中是否还包含文件夹,如果包含,那么再次查询该文件夹
JudgeDirectory(file1);
}
//返回文件对象
return file;
}
return null;
}
}
4.
需求:
删除一个多级文件夹
import java.io.File;
import java.util.Scanner;
public class file {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要删除的文件夹路径:");
File f = new File(sc.next());
DeleteFile(f);
}
private static void DeleteFile(File file) {
File[] files = file.listFiles();
//不断遍历文件夹中的内容
//如果是文件夹的话就使用递归,再次遍历文件夹内的文件并进行判断,目的是确认文件夹为空,能够被正确删除
if (file.isDirectory()) {
for (File file1 : files) {
DeleteFile(file1);
file1.delete();
}
}
//如果是文件的话就直接删除
if (file.isFile()) {
file.delete();
}
}
}
5.
需求:统计一个文件夹中每种文件的个数并打印(考虑子文件夹)
打印格式如下:
txt:3
doc:4
jpg:6
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class file {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要查询的文件夹路径:");
File f = new File(sc.next());
int txtcount = SearchTxt(f);
int doccount = SearchDoc(f);
int jpgcount = SearchJpg(f);
System.out.println("txt:" + txtcount);
System.out.println("doc:" + doccount);
System.out.println("jpg:" + jpgcount);
}
//因为在这个方法中只需要调用JudgeAvi和JudgeDirectory两个方法就足够了,所以不需要返回值
private static int SearchTxt(File f) {
int count = 0;
File[] files = f.listFiles();
for (File file : files) {
if (JudgeTxt(file) != null) {
count++;
}
;
JudgeDirectory(file);
}
return count;
}
private static int SearchDoc(File f) {
int count = 0;
File[] files = f.listFiles();
for (File file : files) {
if (JudgeDoc(file) != null) {
count++;
}
;
JudgeDirectory(file);
}
return count;
}
private static int SearchJpg(File f) {
int count = 0;
File[] files = f.listFiles();
for (File file : files) {
if (JudgeJpg(file) != null) {
count++;
}
;
JudgeDirectory(file);
}
return count;
}
//专门写的JudgeAvi方法判断并输出avi文件
private static File JudgeTxt(File file) {
if (file.getName().endsWith(".txt")) {
return file;
}
return null;
}
//专门写的JudgeDoc方法判断并输出doc文件
private static File JudgeDoc(File file) {
if (file.getName().endsWith(".doc")) {
return file;
}
return null;
}
//专门写的JudgeJpg方法判断并输出jpg文件
private static File JudgeJpg(File file) {
if (file.getName().endsWith(".jpg")) {
return file;
}
return null;
}
private static File JudgeDirectory(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
//不断遍历文件夹中的内容
for (File file1 : files) {
//将每一个搜寻到的文件夹中的文件与.avi后缀匹配
JudgeTxt(file1);
//将每一个搜寻到的文件夹中的文件与.doc后缀匹配
JudgeDoc(file1);
//将每一个搜寻到的文件夹中的文件与.jpg后缀匹配
JudgeJpg(file1);
//使用递归的思想反复查询文件夹之中是否还包含文件夹,如果包含,那么再次查询该文件夹
JudgeDirectory(file1);
}
//返回文件对象
return file;
}
return null;
}
}