0

我一直在使用 Java 中的文件。而且我知道读写文件的基础知识。下面是我尝试编写的代码

    void qlm(String option,String initiate,String ii,String file_path,String source,List destination){ //,String paths,String src){
    String [] Ln = {"B","C","D"};
    int count =1, counter=1,seq=1;
    try{
        System.out.println("Here: " +file_path);
        PrintWriter pwr = new PrintWriter(new FileWriter(getHandleB()),true);
        for(int i=0;i<Ln.length;i++){
            pwr.println("Sequence_Number" + "|" + "QLM_Operation" + "|" + "II_D" + "|" + "Val_D" + "|" + "List" + "|" + "Type" + "|" + "Status" + "|" + "Source" + "|" + "Destination");
            pwr.println(count + "|" + option + "|" + "DataK" + "|" + "Value" + "|" + Ln + "|" + "Null" + "|" + "Pending" + "|" + source + "|" + Ln[i]);
            count++;
         }
        pwr.close();

getHandleB() 是文件的路径。这是在方法qlm(parameters)中执行的

现在我想从另一个名为handle(parameters) 的方法写入同一个文件(路径:getHandleB())

这个函数的输出,应该写在同一个文件中,而不删除前一个方法的内容。当我尝试写入文件时,它会删除以前的内容并写入新的内容。我怎样才能避免这种情况。我希望编写所有方法的所有内容。感谢所有的帮助。

4

2 回答 2

2

您没有附加到文件。使用允许追加的 FileWriter 构造函数,它的第二个参数是布尔值/真值。

PrintWriter pwr = new PrintWriter(new FileWriter(getHandleB(), true),true);

编辑
在我上面的代码中分离出构造函数调用应该可以帮助你理解发生了什么:

FileWriter fileWriter = new FileWriter(getHandleB(), true);
PrintWriter pwr = new PrintWriter(fileWriter, true);

所以你看到了,是的,这里使用了两个布尔参数,但它们与不同的构造函数一起使用。

于 2013-06-23T15:54:39.993 回答
1

您需要使用适当的FileWriter构造函数withtrue作为第二个参数。

默认情况下,aFileWriter会截断它打开的文件。

于 2013-06-23T15:55:09.433 回答