IO流的练习

题目要求

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

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();
	}
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋润康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值