关于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覆盖? 展开
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覆盖? 展开
3个回答
展开全部
FileOutputStream(String name,boolean append)
创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
new FileOutputStream("mm.txt",false);
追问
这个构造方法我是知道的 但是在mm.txt后面无乱该成true还是改成false 结果都是一样的 都没有覆盖,一样的在abcde后面追加123
追答
FileOutputStream 写完之后要调用 flush() 刷新输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
肯定没覆盖啊,mm.txt本身就存在,所以没有创建新型,除非你写入之前写个创建新的文本!用if()判断,不管有没有都删除创建就可以!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
明白了吗?
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”这个数据了,所以想要覆盖就得重新打开一次文件,这时候才回去判断文件并选择追加还是覆盖
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询