Java 覆盖文件

Java Overwrite file

public void saveList(Vector<Vector> table_data){
    ArrayList<String> output_list = new ArrayList<String>();
    for(int i=0;i<table_data.capacity();i++){
        String temp="";
        Vector tempVector = (Vector) table_data.elementAt(i);
        tempVector.trimToSize();
        for(int v=0;v<tempVector.capacity();v++){
            temp+=((String)tempVector.elementAt(v))+" ";

        }
        temp = temp.trim();
        System.out.println(temp);
        output_list.add(temp);
    }
    BufferedWriter bw = null;
    FileWriter fw = null;
    try{
        fw = new FileWriter(output_filename,false); 
        bw= new BufferedWriter(fw);
        for(String i : output_list){
            bw.write(i);
            bw.newLine();
        }

    }
    catch(FileNotFoundException e){}
    finally{
        if (bw != null) {
            try {
                bw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

这是我重写文件的代码。每次单击它时,都有一个 JButton 调用此函数。它传递来自 JTable 的向量。该文件应始终被覆盖。但它实际上只会在我第一次点击按钮时覆盖。问题是什么,我该如何解决?

您没有捕捉到 IOException,因此无法编译

try{
    fw = new FileWriteroutput_filename,false);
    bw= new BufferedWriter(fw);
    for(String i : output_list){
        bw.write(i);
        bw.newLine();
    }
}
catch(IOException e){}

在这个示例和测试代码中,我使用扫描仪保存在 "ENTER" 开始时生成的不同数组。按下的这个键与您的 Button 在文件中写入时所做的相同。

public static void main(String[] args) {
    String[][] array = new String[3][3]; //My array of test
    for(int i = 0; i < 9; ++i){
        array[i/3][i%3] = "#" + i;
    }

    Scanner sc = new Scanner(System.in); //A scanner to way my input
    for(String[] tmp : array){
        System.out.print("Press ENTER to continue");
        sc.nextLine(); //I am read, press "ENTER" to write in file
        BufferedWriter bw = null;
        FileWriter fw = null;
        try{
            fw = new FileWriter("test.txt",false);
            bw= new BufferedWriter(fw);
            for(String s : tmp){
                bw.write(s);
                bw.newLine();
            }
        }
        catch(IOException e){}
        finally{
            if (bw != null) {
                try {
                    bw.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

结果是: 第一次,文件创建

#0
#1
#2

第二次,文件被覆盖:

#3
#4
#5

第三次:

#6
#7
#8

然后程序停止。