欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

笔记 -11- File. IO概述 字节流 缓冲流 练习

程序员文章站 2022-03-19 15:56:04
day11-File与IO课后作业题题目1[File]请在D盘根目录下创建一个文件:test1.txt(随意录入一些内容),再创建一个目录:测试目录要求:获取、打印file1和file2的绝对路径;获取、打印file1和file2的文件名和目录名;获取、打印file1和file2的文件大小;分别判断file1和file2是否存在;分别判断file1和file2是否是文件?是否是目录?效果:参考代码:public static void main(String...

day11-File与IO课后作业题

题目1[File]

请在D盘根目录下创建一个文件:test1.txt(随意录入一些内容),再创建一个目录:测试目录

要求:

  1. 获取、打印file1和file2的绝对路径;

  2. 获取、打印file1和file2的文件名和目录名;

  3. 获取、打印file1和file2的文件大小;

  4. 分别判断file1和file2是否存在;

  5. 分别判断file1和file2是否是文件?是否是目录?

效果:

笔记 -11- File. IO概述 字节流 缓冲流  练习

笔记 -11- File. IO概述 字节流 缓冲流  练习

参考代码:

public static void main(String[] args) {
        File file1 = new File("D:\\test1.txt");
        File file2 = new File("D:\\测试目录");
        //1. 获取、打印file1和file2的绝对路径;
        System.out.println("文件1的绝对路径是:"+file1.getAbsolutePath());
        System.out.println("文件夹2的绝对路径是:"+file2.getAbsolutePath());
        //2. 获取、打印file1和file2的文件名和目录名;
        System.out.println("文件1的名称是:"+file1.getName());
        System.out.println("文件夹2的名称是:"+file2.getName());
        //3. 获取、打印file1和file2的文件大小;
        System.out.println("文件1的大小是:"+file1.length());
        System.out.println("文件夹2的大小是(文件夹获取的不准确):"+file2.getName());
        //4. 分别判断file1和file2是否存在;
        System.out.println("file1表示的文件存在吗?"+file1.exists());
        System.out.println("file2表示的文件夹存在吗?"+file2.exists());
        //5. 分别判断file1和file2是否是文件?是否是目录?
        System.out.println("file1表示的是文件吗?"+file1.isFile());
        System.out.println("file2表示的是文件吗?"+file2.isFile());
    }

题目2[File]

请编写main()方法,创建以下File对象:

​ File file1 = new File(“test.txt”);//相对路径

​ File file2 = new File(“一级目录”);

​ File file3 = new File(“目录A/目录B/目录C”);

要求:

(相对路径,可以相对于项目也可以相对于模块)

  1. 判断file1是否存在?如果不存在,创建这个文件。

  2. 判断file2是否存在?如果不存在,创建这个目录。

    1. 判断file3是否存在?如果不存在,创建这个多级目录。

效果:

笔记 -11- File. IO概述 字节流 缓冲流  练习

参考代码:

public static void main(String[] args) throws IOException {
        File f1 = new File("test.txt");//相对路径,(我设置的是相对于模块的)
        File f2 = new File("abc");
        File f3 = new File("a\\b\\c");
        //1. 判断f1是否存在?如果不存在,创建这个文件。
        if (!f1.exists()) {
            f1.createNewFile();
        }
        //2. 判断f2是否存在?如果不存在,创建这个目录。
        if (!f2.exists()) {
            f2.mkdirs();
        }
        //3. 判断file3是否存在?如果不存在,创建这个多级目录。
        if (!f3.exists()) {
            f3.mkdirs();
        }
    }

题目3[File]

请在D盘下创建一个目录“多级目录”,下面随意创建一些文件和目录。

​ 请编写main()方法,创建以下File对象:

​ File file = new File(“D:\多级目录”);

要求:

​ 遍历这个多级文件夹下的所有内容(包含子文件夹的内容),判断每个File对象是否文件

​ 如果是文件,打印:【文件】+ 绝对路径

​ 如果是目录,打印:【目录】+ 绝对路径

效果
笔记 -11- File. IO概述 字节流 缓冲流  练习
笔记 -11- File. IO概述 字节流 缓冲流  练习

参考代码:

public static void main(String[] args) {
        File file = new File("D:\\a");
        //处理文件夹的方法
        dir(file);
    }

    public static void dir(File file) {
        File[] arr = file.listFiles();
        for (File f : arr) {
            if(f.isFile()){
                System.out.println("文件:"+f.getAbsolutePath());
            }else {
                //说明f是文件夹,先打印,然后再递归处理
                System.out.println("文件夹:"+f.getAbsolutePath());
                dir(f);
            }
        }
    }

题目4[File综合题有难度]

请使用代码计算出你电脑上的任意一个文件夹中的大小。

要求:

必须是一个多层文件夹;

效果
笔记 -11- File. IO概述 字节流 缓冲流  练习

(每个人的具体数据都不一样,以实际情况为准)

参考代码:

public static void main(String[] args) {
        File file = new File("E:\\Java学习专用\\神器资料-很重要!!\\常用API");
        //处理文件夹的方法
        dir(file);
        //直接输出成员变量的值即可
        System.out.println(file.getName()+"文件夹的总大小是:"+len+" 个字节!");
    }
    private static long len = 0;//统计总大小的静态变量
    public static void dir(File file) {
        File[] arr = file.listFiles();
        for (File f : arr) {
            if(f.isFile()){
                //文件就获取大小并累加起来
                len+=f.length();
            }else {
                //说明f是文件夹,递归处理
                dir(f);
            }
        }
    }

题目5[IO]

使用键盘输入多个学生的信息,并将这些学生的信息保存到模块的1.txt文件中;

要求:

1:学生信息包含姓名、年龄(用一行字符串表示即可,无需创建学生对象);

2:每个学生信息占一行,学生信息之间使用逗号分隔;

3:至少输入3个学生信息;

效果

笔记 -11- File. IO概述 字节流 缓冲流  练习

笔记 -11- File. IO概述 字节流 缓冲流  练习

参考代码:

public static void main(String[] args) throws Exception {
        //创建文件对象,准备写数据
        FileOutputStream fout = new FileOutputStream("1.txt");
        Scanner sc = new Scanner(System.in);
        for (int i = 1; true; i++) {
            System.out.println("请输入第"+i+"个学生姓名和年龄,学生信息之间使用逗号分隔(ok表示结束):");
            String s = sc.next();
            if("ok".equalsIgnoreCase(s)){
                System.out.println("拜拜!");
                break;
            }
            // \r\n表示换行
            fout.write((s+"\r\n").getBytes());
        }
        fout.close();
    }

题目6[IO-综合题2有难度-明天做会更简单]

将上一题产生的文件中的学生按照年龄升序排序后重新写回原文件;

效果

1.txt文件排序前:

笔记 -11- File. IO概述 字节流 缓冲流  练习

1.txt文件排序后:

笔记 -11- File. IO概述 字节流 缓冲流  练习

参考代码:

public static void main(String[] args) throws Exception {
        File f = new File("1.txt");
        //创建文件对象,准备读数据
        FileInputStream fin = new FileInputStream(f);
        byte[] arr = new byte[(int)f.length()];//文件中有多少字节,就创建多大的数组,一次性读完
        fin.read(arr);//读到的数据都保存到了arr中
        //把数组转成字符串
        String s = new String(arr);
        //使用换行符切分字符串
        String[] split = s.split("\r\n");
        //再使用逗号切分数组中的每一个元素,可以得到学生的姓名和年龄
        //创建set集合并指定排序规则
        TreeSet<Student> set = new TreeSet<>((s1,s2)->s1.getAge()-s2.getAge()==0?s1.getName().compareTo(s2.getName()):s1.getAge()-s2.getAge());
        for (String s1 : split) {
            String[] split1 = s1.split(",");
            //把按照切分出来的数组的第1个值作为name,第二个值作为age创建学生对象,并按照年龄排序
            Student stu = new Student(split1[0],Integer.parseInt(split1[1]));
            set.add(stu);
        }
        //创建输出流,并把set集合中的学生信息重新写入1.txt文件中;(重写Student的toString方法了)
        FileOutputStream fout = new FileOutputStream("1.txt");
        for (Student stu : set) {
            fout.write((stu.toString()+"\r\n").getBytes());
        }
        fin.close();
        fout.close();
        System.out.println("排序已完成");
    }
ring方法了)
        FileOutputStream fout = new FileOutputStream("1.txt");
        for (Student stu : set) {
            fout.write((stu.toString()+"\r\n").getBytes());
        }
        fin.close();
        fout.close();
        System.out.println("排序已完成");
    }

本文地址:https://blog.csdn.net/qq_45181415/article/details/111874363