老师,读取文件为什么会是乱码错误

来源:3-16 自由编程

qq_就是这样_1

2019-07-16 15:18:51

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

public class BufferStream {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			System.out.println("one.txt不用缓冲流来写:");
			FileOutputStream fos=new FileOutputStream("one.txt",true);
			FileInputStream fis=new FileInputStream("one.txt");
			long start=System.currentTimeMillis();
			int t=0;
			while(t<100000){
				char i='a';
				fos.write(i);
				t++;
			}
			int n=0;
			while((n=fis.read())!=-1){
				System.out.print((char)n);
			}
			long end=System.currentTimeMillis();
			System.out.println("用时:"+(end-start));
			fos.close();
			fis.close();
			System.out.println("**********************************");
			System.out.println("two.txt用缓冲流来写:");
			FileOutputStream fos2=new FileOutputStream("two.txt",true);
			BufferedOutputStream bos=new BufferedOutputStream(fos2);
			FileInputStream fis2=new FileInputStream("two.txt");
			BufferedInputStream bis=new BufferedInputStream(fis);
			long start1=System.currentTimeMillis();
			int t1=0;
			while(t1<100000){
				char i='a';
				bos.write(i);
				t1++;
			}
			int n1=0;
			while((n1=bis.read())!=-1){
				System.out.print((char)n1);
			}
			long end1=System.currentTimeMillis();
			System.out.println("用时:"+(end1-start1));
			bos.close();
			bis.close();
			fos2.close();
			fis2.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}
	}

}


写回答

1回答

好帮手慕小班

2019-07-16

        同学你好,1、这里根据题目要求,只需要计算普通流和缓冲流写入文件的时间就可以了哦!不需要读文件哦!例如:

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

    2、根据同学的错误提示,是流的异常关闭,错误原因是:

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

如上所改将fis改为fis2就可以了哦!

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

0

0 学习 · 11489 问题

查看课程