为什么运行结果只显示这个

为什么运行结果只显示这个

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<10){
				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("\n"+"用时:"+(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(fis2);
			long start1=System.currentTimeMillis();
			int t1=0;
			while(t1<10){
				char i='a';
				bos.write(i);
				t1++;
			}
			//bos.flush();
			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();
		}
	}

}

http://img1.sycdn.imooc.com//climg/5d2dae2d0001a25007220213.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕小班 2019-07-18 10:23:59

        同学你好,1、这里老师运行是没有问题的,可能是同学执行的一直是缓存文件,这里同学可以尝试清理一下class文件,例如: 选择项目中的Project->Clean-->清理当前项目中的class文件,然后再重新运行!

http://img1.sycdn.imooc.com//climg/5d2fd6e90001f31c03060262.jpg

http://img1.sycdn.imooc.com//climg/5d2fd781000189bc05000390.jpg

这里老师的当前项目是TestDemo5,所以就选择清理这个项目哦!

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

  • 提问者 qq_就是这样_1 #1
    还是不行!
    2019-07-18 18:05:52
  • 同学你好,请同学新创建一个工程和one.txt与two.txt,并且新创建一个类来运行上面代码,并且同学运行后,请查看一下控制台的滚动条哦,左右和上都拖动一下,来查看一下运行效果哦! 继续加油,祝:学习愉快!
    2019-07-18 20:14:55
好帮手慕小班 2019-07-17 10:36:42

            同学你好,如果想用read方法来读取,同学的代码中方法是没有错的哦,但是需要注意去掉flush方法的注释哦!因为flush方法的含义是强制将流中的内容写入文件哦,并且因为100000的字符太多,在控制台中不好展示,所以这里老师在循环添加时,数量改小了哦,例如

http://img1.sycdn.imooc.com//climg/5d2e898f00019b4b07740887.jpg

展示方法能正常展示哦!

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

  • 提问者 qq_就是这样_1 #1
    老师,我也是按照你说的做,但运行结果还是无法正常显示,只显示:用时:1813
    2019-07-17 19:02:18
  • 同学你好,这里请同学按照上面回答中的步骤来尝试一下,如果还是无法正常显示,同学就先将read方法去掉,看能否正常展示文件写入的时间! 继续加油,祝:学习愉快!
    2019-07-18 10:29:39
好帮手慕小班 2019-07-16 20:02:05

        同学你好,本题目为了展示加上缓冲流的效率更高哦!并没有要求读出数据,所以这里可以不使用read方法来读哦!并且根据题目要求,向文件中写入100000个字符哦,例如:

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("\n"+"用时:"+(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(fis2);
            long start1=System.currentTimeMillis();
            int t1=0;
            while(t1<100000){
                char i='a';
                bos.write(i);
                t1++;
            }
            //bos.flush();
//            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();
        }
    }
}

运行效果如下:

http://img1.sycdn.imooc.com//climg/5d2dbcaa0001e16702730166.jpg

        这就是题目要求的效果哦!

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

  • 提问者 qq_就是这样_1 #1
    老师,如果想用read()方法来读应该怎么做
    2019-07-16 22:22:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师