头歌 Java语言之文件目录操作

目录

第1关:创建目录

任务描述

相关知识

Java目录创建

编程要求

评测说明

第2关:显示目录结构

任务描述

相关知识

Java获取目录下所有文件及文件夹

Java判断文件对象是否为文件夹或文件

编程要求

评测说明

第3关:查找指定文件

任务描述

相关知识

Java判断字符串对象中是否包含指定字符串

编程要求

评测说明


第1关:创建目录

任务描述

在本关中,你将被要求在src/step1目录下创建一个单目录mkdir,以及一个多目录mkdirs/folder

如果通过Java语言动手编程实现上述功能,我们需要掌握文件目录等相关知识。

相关知识
Java目录创建

使用文件对象的mkdir()mkdirs()方法创建目录,两种方法均返回一个布尔值,若创建成功,返回true;反之返回false

两种方法在使用上稍有不同,请看示例:

 
  1. File file=new File("src/step1/folder");
  2. System.out.println(file.mkdir()); //若使用此方法创建folder文件夹,如果src或step1文件夹不存在,则folder文件夹无法创建,方法返回false
  3. System.out.println(file.mkdirs()); //若使用此方法创建folder文件夹,无论src和step1文件夹存在与否,folder文件夹均可以成功创建,方法返回true

总结:

  • mkdir()方法无法在不存在的父文件夹下建立新文件夹。
  • mkdirs()方法会自动建立不存在的父文件夹。
编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 使用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()方法获取目录下所有文件及文件夹,两种方法的返回值有所不同,请看示例:

 
  1. File file = new File("src/step2");
  2. File[] fileFile = file.listFiles();
  3. String[] fileString = file.list();
  • listFiles()方法返回一个File类的引用,它具有File类的所有属性和方法,比如使用getName()方法能够返回对象的String类型的文件名。
  • list()方法返回一个String类型数组,内容为文件或文件夹的名字。
Java判断文件对象是否为文件夹或文件

使用File类的isDirectory()方法判断文件对象是否为文件夹,该方法返回一个布尔值,若文件对象为文件夹,返回true;反之返回false

 
  1. File file = new File("src/step3");
  2. System.out.println(file.isDirectory()); //file对象指向step3文件夹,故方法返回true

使用File类的isFile()方法判断文件对象是否为文件,该方法返回一个布尔值,若文件对象为文件,返回true;反之返回false

编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 使用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

 
  1. File[] files = file.listFiles();
  2. for (File f: files) {
  3. if (f.getName().contains("readme")) { //判断文件及文件夹名称中是否包含"readme"
  4. System.out.println(f);
  5. }
  6. }
编程要求

本关的编程任务是补全右侧代码片段中BeginEnd中间的代码,具体要求如下:

  • 使用递归算法对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 *********/
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值