2016-11-09 4 views
-2
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. Файл всегда должен быть перезаписан. Но это на самом деле только перезаписывается, когда я сначала нажимаю кнопку. В чем проблема и как я могу ее решить?Java Overwrite file

+1

Добро пожаловать. Возможно, вы создали более [mcve], чем это. – AxelH

+1

Какое исключение было брошено? – EJP

+0

Так как я не видел проблемы (кроме исключения IOException catch), я запустил ваш код с помощью простого массива String. Файл обновляется с новыми значениями каждый раз при запуске. Поэтому вы должны уточнить вопрос, если что-то не работает – AxelH

ответ

0

Вы не поймать 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» другой массив создан в самом начале. Эта клавиша нажата так же, как ваша кнопка будет делать для записи в файл.

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 

Второй раз, файл overriten с:

#3 
#4 
#5 

и снова в третий раз:

#6 
#7 
#8 

Затем программа останавливается.