想提问一下append(true)

想提问一下append(true)

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

public class Buffered2 {

	public static void main(String[] args) {
		try {
			FileOutputStream b1=new FileOutputStream("one.txt");
			BufferedOutputStream b2=new BufferedOutputStream(new FileOutputStream("two.txt"));
			long a=System.currentTimeMillis();
			StringBuilder str=new StringBuilder();
			for(int i=0;i<100000;i++) {
				b1.write(i);
				str.append(true);
			}
			long b=System.currentTimeMillis();
			b1.close();
			for(int i=0;i<100000;i++) {
				b2.write(i);
				str.append(true);
			}
			long c=System.currentTimeMillis();
			b2.flush();
			b2.close();
			System.out.println("one不使用缓冲流来写\n用时为:"+(b-a));
			System.out.println("two使用缓存流来写\n用时为:"+(c-b)+"\n用缓冲流来写节省了"+((b-a)-(c-b))+"ms");
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

append(true)怎么使用呀 我感觉我这个瞎弄的起不到作用 另外为什么生成的txt是乱码 求解 谢谢啦~

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

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

2回答
杨勤_cd 2018-07-30 19:20:46

@MillerX 但是如果把这个构造方法加在for循环里面,就需要加上这个append参数了,像这样:

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

irista23 2018-07-16 19:10:55

这里考察的不是调用StringBuilder的append(true),是使用FileOutputStream构造方法创建一个FileOutputStream对象时,在构造方法的的第二个参数传true,这样达到追加内容的效果,另外打开乱码因为编码问题是正常的。

  • 这个地方,我试了试,不加append好像也能实现功能啊。那这里加append有什么意义?
    2018-07-28 11:39:54
  • https://class.imooc.com/course/qadetail/53075 同学可以参考一下这个问答,希望可以帮到你。
    2018-07-28 15:32:33
  • 使用FileOutputStream的构造方法创建对象的时候,无论后面加不加true,对这道题来说都是一样的效果(因为只有一个输出流,循环输入数据的时候都是使用的这个输出流),但是如果执行多次程序(每次都有一个输出流了),加了true的就可以一直在后面追加内容,如果每次输入1w个字符的话,加true后每次执行完就会变成10000个字符,20000个字符,30000个字符~
    2018-07-30 19:05:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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