老师,作业求批改点评,顺带一个小疑惑。

来源:3-16 自由编程

孬帮手慕小菜

2019-12-04 19:40:24

Test类:

import mode.ModeOne;
import mode.ModeTwo;

public class Test {
	public static void main(String[] args) {
		ModeOne m1 = new ModeOne();
		ModeTwo m2 = new ModeTwo();
	}
}

ModeOne类:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ModeOne {
	Long n = 0l,m = 0l;//设定计时变量n,m
	/**
	 * 无参构造,对speech.txt文件进行写操作的主要方法
	 */
	public ModeOne() {
		n = System.currentTimeMillis();//获取运行开始时间
		try {
			FileOutputStream fos = new FileOutputStream("F:\\IO\\test\\speech.txt");//设定文件绝对路径
			for(int i=0;i<100000;i++) {//循环十万次写入数据
				fos.write((char)i);//向文件中写入字符数据
			}
			m = System.currentTimeMillis();//获取运行后时间
			System.out.println("写入完毕总用时:"+(m-n)+"毫秒");//计算出总运行时间
			fos.close();//关闭流释放资源
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e) {
			e.printStackTrace();
		}
	}
}

ModeTwo类:

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ModeTwo {
	Long n = 0l,m = 0l;//设定计时变量n,m
	/**
	 * 无参构造,对speech2.txt文件进行写操作的主要方法
	 */
	public ModeTwo() {
		n = System.currentTimeMillis();//获取运行之前的时间
		try {
			FileOutputStream fop = new FileOutputStream("F:\\IO\\test\\speech2");//设定文件绝对路径
			BufferedOutputStream bfos = new BufferedOutputStream(fop);//使用缓冲流
			for(int i = 0;i<100000;i++) {//循环十万次写入数据
				bfos.write((char)i);//向文件中写入字符数据
			}
			m = System.currentTimeMillis();//获取运行之后的时间
			System.out.println("写入完毕,总用时"+(m-n)+"毫秒");//计算出总运行时间
			bfos.flush();//强制清空缓冲区
			bfos.close();//关闭流,释放资源
			fop.close();//关闭流释放资源
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
}

疑问:

如果我先关闭输入流再关闭缓冲流为什么会报错呢?

http://img.mukewang.com/climg/5de79b060958ee3b10830274.jpghttp://img.mukewang.com/climg/5de79b0f090e8a0808150191.jpg

写回答

1回答

好帮手慕小尤

2019-12-05

同学你好,1. 建议同学按照作业要求计算出节省的时间。修改ModeOne与ModeTwo方法的类型将时间返回回去然后进行计算。修改后代码如下:

http://img.mukewang.com/climg/5de862dd09efe48008470440.jpg

http://img.mukewang.com/climg/5de862f2093b067b08560492.jpg

http://img.mukewang.com/climg/5de863000973dd7b08020174.jpg

2. 流的关闭顺序是有要求的,如下所示的代码是有错误的:bfos是通过fos生成的,所以要先关闭bfos,然后再关闭fos。

http://img.mukewang.com/climg/5de860e109bc795d08750597.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 11489 问题

查看课程