如何解决FileOutput Stream删除文本文件内容
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时,它不会发生。
解决方法
FileOutputStream
默认会覆盖该文件(如果存在)。您可以使用overloaded constructor附加到该文件,而不是覆盖它:
FileInputStream fis = new FileInputStream(f,true);
// Here -------------------------------------^
,
您应该尝试使用此构造函数:
FileOutputStream fos = new FileOutputStream(f,true);
因此,如果文件已经存在,将添加到文件中。
文档可用here
,如果被删除,因为它实际上被覆盖。每次使用new FileOutputStream(File file)
构造函数创建新的 FileOutputStream 对象时,新的FileDescriptor为created,因此:
字节写入文件的开头。
您可以想到它,就像它通过覆盖该文件中先前存在的所有内容开始写入文件一样。
您也可以使用FileOutputStream(File f,boolean append)
构造函数创建 FileOutputStream 对象,并将true
作为布尔参数传递给该构造函数,在this情况下: / p>
字节将被写入文件的末尾,而不是开头。
您将维护已写入文件的内容,并将您的数据追加到文件中的现有数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。