已有259人关注
输出流覆盖原文件内容问题?
发表在Java答疑区 2017-06-24
是否精华
版块置顶:

import java.io.*;


public class FileTest {

public static void main(String[] args) {

File file = new File("word.txt");

try {

FileOutputStream out = new FileOutputStream(file);

String str = new String("我有一只小毛驴,我怎么也不骑。");

byte[] buy = str.getBytes();

System.out.println(buy.length);

out.write(buy, 2, buy.length - 2);

out.close();

} catch (Exception e) {

e.printStackTrace();

}


try {

FileInputStream in = new FileInputStream(file);

in.skip(6);

byte[] byt = new byte[1024];

int len = in.read(byt);

System.out.println(new String(byt, 0, len));

in.close();

} catch (Exception e) {

e.printStackTrace();

}

}



上述代码每次运行,原文件的内容均为:我有一只小毛驴,我怎么也不骑。

如果我不想覆盖文件的内容,而是在原文件内容后面追加一句话(增加内容为:我增加了一句),使得上述代码运行后,文件内容为

我有一只小毛驴,我怎么也不骑。我增加了一句    

应该怎么修改呢?

还有:代码中为什么一定要用try-catc语句包围?




2017-06-24 23:27:27编辑
分享到:
精彩评论 1
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2017-06-26
沙发

(1)向原文件追加内容,需要把“FileOutputStream out = new FileOutputStream(file);”修改为“FileOutputStream out = new FileOutputStream(file, true);”。

(2)try-catch代码块,在编写代码过程中,其实是Eclipse要求的。读者可以把“try {”、“} catch (Exception e) {”和“倒数第三个}”注释掉,这时Eclipse会报错,读者把鼠标悬停在红色波浪线处,Eclipse会提示“使用try-catch块”。

首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照