这个问题在这里已经有答案了:
如何使用fileoutputstream写入数据而不丢失旧数据(2个答案)
5个月前关门了。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
public class FileIoStream {
public static void main(String[] args) throws IOException {
File f = new File("C:\\Users\\rs\\IO\\myfile.txt");
FileInputStream fis = new FileInputStream(f);
FileOutputStream fos = new FileOutputStream(f);
}
}
每次我为fileoutputstream创建一个对象时,myfile.txt中的内容都会被删除,我不知道为什么?但当我只是新建fileinputstream时,它不会发生。
3条答案
按热度按时间a14dhokn1#
FileOutputStream
默认情况下,覆盖文件(如果存在)。您可以使用重载构造函数附加到该文件,而不是覆盖该文件:dba5bblo2#
您应该尝试使用此构造函数:
因此,如果文件已存在,则必须添加到该文件的内容将被追加。
此处提供文档
nzkunb0c3#
如果被删除,因为它实际上被覆盖了。每次创建新的fileoutputstream对象时
new FileOutputStream(File file)
构造函数,则会创建一个新的filedescriptor,因此:字节写入文件的开头。
你可以这样想,就像它通过覆盖文件中以前存在的所有内容开始写入文件一样。
您也可以使用
FileOutputStream(File f, boolean append)
构造函数,通过true
作为布尔参数输入到构造函数中,在本例中:字节将写入文件的结尾而不是开头。
您将维护已写入文件的内容,并且您的数据将附加到文件中的现有数据中。