关于java中io流的问题,求答案

一段代码FileInputStreamfis1=newFileInputStream("ax.txt");//文件中是abcdeFileInputStreamfis2=n... 一段代码
FileInputStream fis1 = new FileInputStream("ax.txt");//文件中是abcde
FileInputStream fis2 = new FileInputStream("aa.txt");//文件中是123
FileOutputStream fos = new FileOutputStream("mm.txt");
int len1;
byte[] arr1 = new byte[1024];
while((len1=fis1.read(arr1))!=-1){
fos.write(arr1,0,len1);
}
int len2;
byte[] arr2 = new byte[1024];
while((len2=fis2.read(arr2))!=-1){
fos.write(arr2,0,len2);
}
//程序运行完了后mm.txt中是abcde123
问题是FileOutputStream在往mm.txt中写fis2中的123时问什么没有将abcde覆盖?
展开
 我来答
百度网友5c69cfc
2013-10-16 · TA获得超过238个赞
知道小有建树答主
回答量:325
采纳率:100%
帮助的人:227万
展开全部
FileOutputStream(String name,boolean append)
  创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
  new FileOutputStream("mm.txt",false);
追问
这个构造方法我是知道的  但是在mm.txt后面无乱该成true还是改成false 结果都是一样的 都没有覆盖,一样的在abcde后面追加123
追答
FileOutputStream 写完之后要调用 flush() 刷新输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小小豆士
2013-10-16 · 超过15用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:42.9万
展开全部
肯定没覆盖啊,mm.txt本身就存在,所以没有创建新型,除非你写入之前写个创建新的文本!用if()判断,不管有没有都删除创建就可以!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青颍之魂
2013-10-16 · TA获得超过129个赞
知道答主
回答量:97
采纳率:100%
帮助的人:46.6万
展开全部
FileOutputStream(String name, boolean append)
name - the system-dependent file name
append - if true, then bytes will be written
to the end of the file rather than the beginning

明白了吗?
更多追问追答
追问
没看懂,能来点中文么?
这个构造方法我是知道的 但是在mm.txt后面无乱该成true还是改成false 结果都是一样的 都没有覆盖,一样的在abcde后面追加123
追答
你需要修改下代码,第一append参数为false,第二,在写入arr1之后关闭fos流,然后在写入arr2重新打开输出流,然后在写入,mm.txt的结果就是123,abcd已经被覆盖,OK
那段话的意思是输出流在开始写入时,会去创建一个文件,并写入,如果文件已经存在而且append为false,则覆盖。并不是每写入一个字节就判断一次文件是否存在,不然的话mm.txt文件里面只会保存“3”这个数据了,所以想要覆盖就得重新打开一次文件,这时候才回去判断文件并选择追加还是覆盖
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式