2016-06-03 14 views
0

У меня есть следующий код, который записывает текстовый файл и сохраняет цифры с пользовательского ввода.Перезаписать существующий файл в Java

for (contador = 0; contador < numeros; contador++){ 
       array[contador]= Integer.parseInt (JOptionPane.showInputDialog("Ingresa " + numeros + " números")); try{ 
        File archivo = new File ("lista de numeros.txt"); 
        FileWriter fr = new FileWriter (archivo,true); 
        fr.write(Integer.toString(array[contador])); 
        fr.write("\r\n"); 
        fr.close(); 
       }catch(Exception e){ 
        System.out.println("Error al escribir"); 
       } 

То, что я хочу сделать, это переписать файл сразу создается не добавить, однако, если я изменю ложь, это не работает, потому что только сохраняет номер последнего из пользовательского ввода. Есть ли другой способ перезаписать файл? Или есть что-то, что мне не хватает?

+0

Передача 'false' _should_ на самом деле переписывает файл. Что вы имеете в виду с «это не работает, потому что только сохраняет последний номер с пользовательского ввода»? –

+1

Допустим, пользователь входит в 1,2,3,4,5. Если его значение истинно, оно сохраняет пять чисел. Но если я перейду на false, он сохранит только 5. –

ответ

1

Вы хотели бы что-то вдоль линий кода ниже. Объявление File/FileWriter за пределами try, инициализация внутри try и закрытие в finally.

File archivo = null; 
FileWriter fr = null; 
try { 
    archivo = new File("lista de numeros.txt"); 
    fr = new FileWriter(archivo, true); 
    for (contador = 0; contador < numeros; contador++) { 
     array[contador] = Integer.parseInt(JOptionPane.showInputDialog("Ingresa " + numeros + " números")); 
     fr.write(Integer.toString(array[contador])); 
     fr.write("\r\n"); 
    } 
} catch (Exception e) { 
    System.out.println("Error al escribir"); 
} finally { 
    fr.close(); 
} 
+0

Да, это решило проблему и перешло на _false_, чтобы фактически перезаписать –

+0

@TiffanyM. Конечно. Да. Это кажется правдоподобным. :) –

0

Пожалуйста, удалите файл перед тем, как писать на него. Ниже приведен пример кода удаления файла в Java:

try { 
    Files.delete(path); 
} catch (NoSuchFileException x) { 
    System.err.format("%s: no such" + " file or directory%n", path); 
} catch (DirectoryNotEmptyException x) { 
    System.err.format("%s not empty%n", path); 
} catch (IOException x) { 
    // File permission problems are caught here. 
    System.err.println(x); 
} 
0

Проблема заключается в fr.close(); внутри для

File archivo = new File ("lista de numeros.txt"); 
    FileWriter fr = new FileWriter (archivo,true); 

    for (contador = 0; contador < numeros; contador++){ 
     array[contador]= Integer.parseInt (JOptionPane.showInputDialog("Ingresa " + numeros + " números")); try{   
      fr.write(Integer.toString(array[contador])); 
      fr.write("\r\n"); 
     }catch(Exception e){ 
      System.out.println("Error al escribir"); 
     } 

    } 
    fr.close(); 

Файл должен быть закрыт после того, как процесс

Смежные вопросы