第1关:创建文件
任务描述
本关任务:在指定文件夹下创建文件。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 在
src/output
目录下创建hello.txt
,test.txt
文件。
需要先创建test.txt
,后创建hello.txt
。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
package 文件类题目;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Scanner;
public class Task {
public void solution()throws IOException {
/********* Begin *********/
File file1 = new File("src/output/test.txt");
File file2 = new File("src/output/hello.txt");
file1.createNewFile();
file2.createNewFile();
/********* End *********/
}
}
第2关:文件的常用操作
任务描述
本关任务:创建文件夹,删除文件,列出文件和目录。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,实现文件夹下所有文件信息的列出,删除指定文件夹,在文件夹下创建文件,具体要求如下:
-
在
src/
下创建文件夹test2
文件夹; -
删除
src/output/
下的test2.txt
文件; -
在
src/test2/
目录下创建helloworld.txt
文件和step2.txt
文件; -
将
src/output/
目录和src/test2/
目录下所有文件的文件名按升序排序并打印至控制台。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
输出如下结果:
output目录结构为:
a.txt
b.txt
c.txt
hello.txt
test.txt
test2目录结构为:
helloworld.txt
step2.txt
package 文件类题目;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Iterator;
public class Task2 {
static File file=null;
static File[] files=null;
public static void dcFile() throws IOException {
file=new File("src/test2");
file.mkdir();
file=new File("src/output/test2.txt");
file.delete();
file=new File("src/test2/helloworld.txt");
file.createNewFile();
file=new File("src/test2/step2.txt");
file.createNewFile();
file=new File("src/output");
files=file.listFiles();
Arrays.sort(files);
System.out.println("output目录结构为:");
for(File file:files){
System.out.println(file.getName());
}
file=new File("src/test2");
files=file.listFiles();
Arrays.sort(files);
System.out.println("test2目录结构为:");
for(File file:files){
System.out.println(file.getName());
}
}
}
第3关:文件查看器
任务描述
本关任务:实现一个文件查看器,要实现指定文件夹下所有文件以及文件夹目录结构的展示。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 实现对给定文件夹目录结构的展示,并以文件名按升序排序的形式打印至控制台。如果是文件夹则在其名字之前加上
+--
,若是文件则加上--
,上级目录与下级目录、下级文件用两个空格作为间隔,补充完善右侧代码区中的showDirStructure(File dir)
函数实现要求的功能,其中函数参数含义如下:
1).dir
:指定要显示的文件夹。
注:main
函数可点击右上角文件夹切换至本关Test.java
文件进行查看。
测试说明
补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。
样例1
输入:src/step3/root
输出:
样例2
输入:src/step3/dir
输出:
package 文件类题目;
import java.io.File;
import java.util.Arrays;
import java.util.Iterator;
public class Task {
public void showDirStructure(File dir){
File[] files=dir.listFiles();
Arrays.sort(files);
System.out.println("+--"+dir.getName());
Iterator iterator= Arrays.stream(files).iterator();
while(iterator.hasNext()){
function(1, (File) iterator.next());
}
}
public void function(int n,File file){
for(int i=1;i<=2*n;i++)System.out.print(" ");
if(file.isFile()){
System.out.println("--"+file.getName());
}else{
System.out.println("+--"+file.getName());
File[] files=file.listFiles();
Arrays.sort(files);
Iterator iterator= Arrays.stream(files).iterator();
while(iterator.hasNext()){
function(n+1, (File) iterator.next());
}
}
}
}
第4关:图片查看器
本关任务:小明想要开发一个图片查看器,但是他想只显示文件夹下所有图片类型的文件。
你来帮小明实现这个功能吧。
编程要求
请仔细阅读右侧代码,根据方法内的提示,在Begin - End
区域内进行代码补充,具体任务如下:
- 实现对给定文件夹目录结构的展示,并以文件名按升序排序的形式打印至控制台。如果是文件夹则在其名字之前加上
+--
,若是文件则加上--
,上级目录与下级目录、下级文件用两个空格作为间隔,另外需要对文件进行过滤,只显示图片类型的文件,本关需要过滤的图片文件类型有:“jpg,png,bmp”
,请补充完善右侧代码区中的showDirStructure(File file)
函数实现本关要求的功能,其中函数参数含义如下:
1). file
:指定要显示的文件夹。
测试说明
样例1
输入:src/step4/root
输出:
样例2
输入:src/step4/dir
输出:
package 文件类题目;
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Locale;
public class Task {
public void showDirStructure(File dir){
FileFilter filter=file->{
if(file.isFile()){
String fileName=file.getName().toLowerCase();
if(fileName.endsWith(".jpg")||fileName.endsWith(".png")||fileName.endsWith(".bmp")){
return true;
}
}else if(file.isDirectory()){
return true;
}
return false;
};
File[] files=dir.listFiles(filter);
Arrays.sort(files);
System.out.println("+--"+dir.getName());
Iterator iterator= Arrays.stream(files).iterator();
while(iterator.hasNext()){
function(1, (File) iterator.next(),filter);
}
}
public void function(int n,File file,FileFilter filter){
for(int i=1;i<=2*n;i++)System.out.print(" ");
if(file.isFile()){
System.out.println("--"+file.getName());
}else{
System.out.println("+--"+file.getName());
File[] files=file.listFiles(filter);
Arrays.sort(files);
Iterator iterator= Arrays.stream(files).iterator();
while(iterator.hasNext()){
function(n+1, (File) iterator.next(),filter);
}
}
}
}