如何编写FileOutputStream
存在的文件?当我运行两次此程序时,第二次oos
和fos
为空
public class ReadFile {
static FileOutputStream fos = null;
static ObjectOutputStream oos = null;
public static void main(String[] args) throws IOException, ClassNotFoundException {
File f = new File("file.tmp");
if (f.exists()) {
//How to retreive an old oos to can write on old file ?
oos.writeObject("12345");
oos.writeObject("Today");
}
else
{
fos = new FileOutputStream("file.tmp");
oos = new ObjectOutputStream(fos);
}
oos.close();
}
}
答案 0 :(得分:2)
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f,true));
如果你想附加到文件
答案 1 :(得分:1)
如果您不想覆盖该文件,请将true参数添加到File或Fileoutputstream构造函数
new FileOutputStream( new File("Filename.txt"), true );
Parameters:
name - the system-dependent file name
append - if true, then bytes will be written to the end of the file rather than the beginning
答案 2 :(得分:1)
如果您打算撰写纯文本,请尝试使用FileWriter
代替FileOutputStream
。
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("outfilename", true)));
out.println("the text");
第二个参数(true
)将告诉追加文件。
答案 3 :(得分:0)
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f, true));
在您的代码中,您有ObjectOutputStream oos = null;
,因此oos
为null
。你需要初始化它。像这样:
public class ReadFile {
static FileOutputStream fos = null;
static ObjectOutputStream oos = null;
public static void main(String[] args) throws IOException, ClassNotFoundException {
File f = new File("file.tmp");
oos = new ObjectOutputStream(new FileOutputStream(f, true));
if (f.exists()) {
//How to retreive an old oos to can write on old file ?
oos.writeObject("12345");
oos.writeObject("Today");
}
else
{
fos = new FileOutputStream(f, true);
oos = new ObjectOutputStream(fos);
}
oos.close();
}
}
答案 4 :(得分:0)
只需创建新的FileOutputStream
,将第二个参数设置为true
FileOutputStream d = new FileOutputStream(file, append);