第1关:学习-Java输入输出之File类之获取文件信息

目录

第1关:学习-Java输入输出之File类之获取文件信息

任务描述

相关知识

编程要求

测试说明

代码:


任务描述

本关任务:判断给定的字符串是目录、文件路径还是其它。

相关知识

File 对象既可以表示文件,又可以表示目录,下面我们来了解一下更多关于 File 对象的操作。

#####获取文件信息常用方法

已知在C:/Users/yy/Desktop/file目录下有文件a.txtb.txt

当 File 对象表示目录时,有以下常用方法获取文件信息:

public static void main(String[] args) throws IOException{
        File f = new File("C:\\Users\\yy\\Desktop\\file");
        // 判断是否是目录
        boolean directory1 = f.isDirectory();
        System.out.println(directory1);
        // 返回定义文件对象的路径
        String path = f.getPath();
        System.out.println(path);
        // 返回绝对路径
        String absolutePath = f.getAbsolutePath();
        System.out.println(absolutePath);
        // 以字符串数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
        String[] list = f.list();
        System.out.println(Arrays.toString(list));
        // 以文件数组的形式,返回当前文件夹下的所有文件(不包含子文件及子文件夹)
        File[] fs= f.listFiles();
        System.out.println(Arrays.toString(fs));
        // 以字符串形式返回所在文件夹
        String parent = f.getParent();
        System.out.println(parent);
        // 以文件形式返回所在文件夹
        File parentFile = f.getParentFile();
        System.out.println(parentFile);
    }

执行结果:

true
C:\Users\yy\Desktop\file
C:\Users\yy\Desktop\file
[a.txt, b.txt]
[C:\Users\yy\Desktop\file\a.txt, C:\Users\yy\Desktop\file\b.txt]
C:\Users\yy\Desktop
C:\Users\yy\Desktop

当 File 对象表示文件时,有以下常用方法获取文件信息:

public static void main(String[] args) throws IOException{
        File f = new File("C:\\Users\\yy\\Desktop\\file\\a.txt");
        // 判断是否是文件
        boolean file = f.isFile();
        System.out.println(file);
        // 获取文件字节大小
        long length = f.length();
        System.out.println(length);
        // 判断文件是否可读
        boolean b = f.canRead();
        System.out.println(b);
        // 判断文件是否可写
        boolean b1 = f.canWrite();
        // 判断文件是否存在
        boolean exists = f.exists();
        System.out.println(exists);
        // 获取文件名字
        String name = f.getName();
        System.out.print(name);
    }

执行结果:

true
10
true
true
a.txt

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,判断给定的字符串是目录、文件路径还是其它。具体要求如下:

  • 接收给定的一行字符串(如:/test);
  • 如果字符串是目录,输出该目录下的所有文件;
  • 如果字符串是文件,获取文件名并输出文件大小;
  • 如果既不是目录又不是文件,请输出提示语句:“非法字符串”。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例: 测试输入:

/test

预期输出:

[a.txt,b.txt]

测试输入:

/test/a.txt

预期输出:

a.txt
11

测试输入:

test

预期输出:

非法字符串

代码:

import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

public class FileTest {
    public static void main(String[] args) throws IOException {
        // 请在Begin-End间编写完整代码
        /********** Begin **********/
        // 接收给定字符串
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        // 创建文件对象
		File f = new File(s);
        // 如果字符串是文件,获取文件名并输出文件大小
        if(f.isFile()){
            String name = f.getName();
            System.out.println(name);
            long length = f.length();
            System.out.println(length);
        // 如果字符串是目录,输出该目录下的所有文件
        }else if(f.isDirectory()){
            String[] list = f.list();
            System.out.println(Arrays.toString(list));
        // 如果字符串既不是文件,又不是目录,输出提示语句:“非法字符串”
        }else{
            System.out.println("非法字符串");
        }
        
        /********** End **********/
    }
}

开始你的任务吧,祝你成功!