IO流的练习

    科技2023-10-12  104

    目录

    题目要求A:提供的内容:B:最终的结果:C:编程思路(仅供参考):D:注意事项:相关代码如下:

    题目要求

    由于在线网课提交作业过多,为了减轻学委及老师统计未交学生名单,我们来写一段儿代码完成此需求!

    A:提供的内容:

    学生名单一份学生作业若干份,分别存储在”作业”文件夹中

    B:最终的结果:

    在”作业统计结果.txt” 中没有交作业的学生名字后边添加”未交作业”,已提交的名字后边添加”已提交”

    C:编程思路(仅供参考):

    1: 使用BufferedReader 读取原始名单并以<key,value> (<” 张三”,” 未交作业”>) 存入HashMap 中 2:使用File.list()方法获取提交作业文件夹(第四次作业)中的所有文件名字,并与HashMap中存储的原始名单做对比,并将对比结果存储在HashMap 中,如果交了作业则更新此名字对象的value 值,否则不执行任何操作 3:将更新完毕的HashMap 进行遍历并通过BufferedWriter 写入到指定的“作业统计结果.txt”文件中

    D:注意事项:

    在进行名字读取时可能会出现中文乱码,建议通过搜索”BufferedReader 和FileReader 读取txt 文件乱码” 来解决!

    相关代码如下:

    public static void main(String[] args) throws IOException { // 读取全班的学生名单 HashMap<String, String> map = null; InputStreamReader isr = new InputStreamReader( new FileInputStream("C:\\Users\\Desktop\\第2次大作业\\作业\\学生名单.txt"), "UTF-8"); BufferedReader br = new BufferedReader(isr); // 存入hashmap中 map = new HashMap<String, String>(); String line = ""; while ((line = br.readLine()) != null) { map.put(line, "未提交作业"); // System.out.println(line); } // 读取提交作业的学生名单 File file = new File("C:\\Users\\Desktop\\第2次大作业\\作业\\第四次作业"); String[] names = file.list(); String name = ""; // 遍历数组 for (String str : names) { int end = str.lastIndexOf("."); name = str.substring(0, end); // 判断 // boolean isContains = name.contains(line); // if (isContains) { map.put(name, "已提交");// 更新value // } // System.out.println(name); // 把结果写入txt中 BufferedWriter bw = null; bw = new BufferedWriter(new FileWriter("C:\\Users\\Desktop\\第2次大作业\\作业\\作业统计结果.txt")); Iterator<String> it = map.keySet().iterator(); while (it.hasNext()) { String key = it.next(); String value = map.get(key); bw.write(key + "," + value); bw.newLine(); } // 关闭 if (br != null) br.close(); if (bw != null) bw.close(); } }
    Processed: 0.010, SQL: 8