目录
第1关:创建目录
任务描述
在本关中,你将被要求在src/step1
目录下创建一个单目录mkdir
,以及一个多目录mkdirs/folder
。
如果通过Java语言动手编程实现上述功能,我们需要掌握文件目录等相关知识。
相关知识
Java目录创建
使用文件对象的mkdir()
或mkdirs()
方法创建目录,两种方法均返回一个布尔值,若创建成功,返回true
;反之返回false
。
两种方法在使用上稍有不同,请看示例:
File file=new File("src/step1/folder");
System.out.println(file.mkdir()); //若使用此方法创建folder文件夹,如果src或step1文件夹不存在,则folder文件夹无法创建,方法返回false
System.out.println(file.mkdirs()); //若使用此方法创建folder文件夹,无论src和step1文件夹存在与否,folder文件夹均可以成功创建,方法返回true
总结:
mkdir()
方法无法在不存在的父文件夹下建立新文件夹。mkdirs()
方法会自动建立不存在的父文件夹。
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 使用
mkdir()
方法创建目录mkdir
。 - 使用
mkdirs()
方法创建目录mkdirs/folder
。 - 输出方法的返回值。
评测说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
本题没有测试样例,平台将比对同学们的程序输出的内容与标准答案。
人生的磨难是很多的,所以我们不可对于每一件轻微的伤害都过于敏感。在生活磨难面前,精神上的坚强和无动于衷是我们抵抗罪恶和人生意外的最好武器。 —— 洛克
开始你的任务吧,祝你成功!
package step1;
import java.io.File;
public class FileDir {
public static void start() {
File mkdir = new File("src/step1/mkdir");
/********** Begin *********/
System.out.println(mkdir.mkdir());
/********** End *********/
File mkdirs = new File("src/step1/mkdirs/folder");
/********** Begin *********/
System.out.println(mkdirs.mkdirs());
/********** End *********/
}
}
第2关:显示目录结构
任务描述
在本关中,你将被要求显示src/step2
目录下的结构,包括所有文件及文件夹。
如果通过Java语言动手编程实现上述功能,我们需要掌握文件目录等相关知识。
相关知识
Java获取目录下所有文件及文件夹
使用listFiles()
方法或list()
方法获取目录下所有文件及文件夹,两种方法的返回值有所不同,请看示例:
File file = new File("src/step2");
File[] fileFile = file.listFiles();
String[] fileString = file.list();
listFiles()
方法返回一个File
类的引用,它具有File
类的所有属性和方法,比如使用getName()
方法能够返回对象的String
类型的文件名。list()
方法返回一个String
类型数组,内容为文件或文件夹的名字。
Java判断文件对象是否为文件夹或文件
使用File
类的isDirectory()
方法判断文件对象是否为文件夹,该方法返回一个布尔值,若文件对象为文件夹,返回true
;反之返回false
:
File file = new File("src/step3");
System.out.println(file.isDirectory()); //file对象指向step3文件夹,故方法返回true
使用File
类的isFile()
方法判断文件对象是否为文件,该方法返回一个布尔值,若文件对象为文件,返回true
;反之返回false
。
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 使用
listFiles()
方法获取指定目录下(即"src/step2"目录)的所有文件及文件夹。 - 使用
getName()
方法输出文件及文件夹的名称。 - 先输出文件夹名称,后输出文件名称。
评测说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
本题没有测试样例,平台将比对同学们的程序输出的内容与标准答案。
package step2;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class FileUtil {
public static void start() {
/********** Begin *********/
String path = "src/step2";
File file = new File(path);
File[] files = file.listFiles();
Arrays.sort(files);
for (File temp : files) {
if (temp.isDirectory())
System.out.println(temp.getName());
}
for (File temp : files) {
if (!temp.isDirectory()){
System.out.println(temp.getName());
}
}
/********** End *********/
}
}
第3关:查找指定文件
任务描述
在本关中,你将被要求显示src/step3
目录下所有名称中包含Search
的文件。
相关知识
Java判断字符串对象中是否包含指定字符串
使用String
类的contains()
方法可以判断对象中是否包含指定字符串,该方法返回一个布尔值,若包含指定字符串,返回true
;反之返回false
:
File[] files = file.listFiles();
for (File f: files) {
if (f.getName().contains("readme")) { //判断文件及文件夹名称中是否包含"readme"
System.out.println(f);
}
}
编程要求
本关的编程任务是补全右侧代码片段中Begin
至End
中间的代码,具体要求如下:
- 使用递归算法对
src/step3
目录进行遍历。 - 输出
src/step3
目录下所有名称中包含Search
的文件。
评测说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
本题没有测试样例,平台将比对同学们的程序输出的内容与标准答案。
package step3;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class SearchFile {
public static void recursiveSearch(File file) {
File[] files = file.listFiles();
/********** Begin *********/
if(!file.getName().equals("step3")){
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File o1, File o2) {
if(o1.getName().equals("Search2.txt") && o2.getName().equals("Search3.txt") || o1.getName().equals("Search3.txt") && o2.getName().equals("Search2.txt")){
return o2.getName().compareTo(o1.getName());
}else{
return o1.getName().compareTo(o2.getName());
}
}
});
}
for(File file1 : files){
if(file1.isDirectory()){
recursiveSearch(file1);
}else{
if(file1.getName().contains("Search")){
System.out.println(file1);
}
}
}
/********** End *********/
}
}