头歌java课程实验(文件操作)
第1关:显示文件列表信息及文件内容
任务描述
本关任务:显示当前目录下的文件列表及当前目录下Hello.txt的文件内容
编程要求
(1)文件列表显示文件最后修改的日期
(2)对目录,显示<DIR>,对文件,显示文件大小
(3)先显示所有的目录信息,然后显示文件信息
(4)多个目录或文件的显示无需按日期排序
(5)具体的输出格式参考运行示例,仅供参考
提醒:将运行示例复制到记事本中可能看得更清晰。
运行示例
当前目录 C:\Users\Ldf\git\java22 的文件列表如下:
2024-05-12 15:50:29 <DIR> .settings
2024-05-26 06:40:44 <DIR> .git
2024-06-02 09:45:52 <DIR> src
2024-06-11 09:33:52 <DIR> bin
2024-03-21 06:17:22 15 .gitignore
2024-05-12 16:16:24 381 .project
2024-06-01 09:53:14 396 .classpath
2024-06-11 10:58:08 96 Hello.txt
文件 C:\Users\Ldf\git\java22\Hello.txt 的内容如下:
你好世界,我是 Hello.txt
我就是一个文本文件
测试说明
平台会对你编写的代码进行测试~
开始你的任务吧,祝你成功!
import java.io.*;
import java.nio.file.*;
import java.time.*;
import java.util.stream.Stream;
import java.util.*;
import java.time.format.DateTimeFormatter;
import java.time.Instant;
import java.time.ZoneId;public class Step1 {public static void main(String[] args) throws IOException {File dir=new File(".");System.out.println("当前目录 "+dir.getCanonicalPath()+" 的文件列表如下:");//(1)----------编写代码实现文件列表功能-----------File[] files = dir.listFiles();if (files != null) {Stream.of(files).sorted(Comparator.comparing(File::isDirectory).reversed()).forEach(file -> {long lastModified = file.lastModified();LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(lastModified), ZoneId.systemDefault());DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String dateStr = formatter.format(dateTime);if (file.isDirectory()) {System.out.printf("%s <DIR> %s%n", dateStr, file.getName());} else {System.out.printf("%s %12d %s%n", dateStr, file.length(), file.getName());}});}File hello = new File("./Hello.txt");System.out.println("\n文件 "+hello.getCanonicalPath()+" 的内容如下:");//(2)----------显示文件内容-----------System.out.print(new String(Files.readAllBytes(hello.toPath())));}
}