Как записать новый контент внизу предыдущего контента в файле ввода / вывода - PullRequest
1 голос
/ 04 февраля 2020

Я пытаюсь записать новое содержимое в файл, который я создал, но когда я ввожу некоторые новые значения, он удаляет мои последние значения и заменяет их новыми, есть ли способ сохранить новые значения и поместить эту информацию в новых строках файла?

    String line = "";
    System.out.println( "Escriba el ID" );
    CL.setID( reader.next() );
    System.out.println( "Escriba el Presupuesto" );
    CL.setPresupuesto( reader.next() );
    System.out.println( "Escriba el Nombre del cliente" );
    CL.setNombre( reader.next() );

    try {
        BufferedReader input = new BufferedReader( new FileReader( file ) );
        Scanner input2 = new Scanner( file );
        PrintWriter output = new PrintWriter( file );

        output.println( "ID: #" + CL.getID() );
        output.println( "Presupuesto: " + CL.getPresupuesto() + " $" );
        output.println( "Nombre: " + CL.getNombre() );
        output.println( line );
        output.println( "----------------------------------------" );
        output.close();
    }
    catch( IOException ex ) {
        System.out.println( "Error!!!!" );
    }

    try {
        Scanner input = new Scanner( file );

        String ID = input.nextLine();
        String c = input.nextLine();
        String Name = input.nextLine();
        System.out.printf( "%s \n%s$\n%s\n", ID, c, Name );
        System.out.println( "Cliente Añadido exitosamente!!!" );
        input.close();

    }
    catch( FileNotFoundException ex ) {
        System.out.println( "ERROR!!!!!!!" );
    }

Ответы [ 3 ]

1 голос
/ 04 февраля 2020

Вы используете PrintWriter и по умолчанию он не открывает файл в режиме добавления.

Вам необходимо открыть файл в режиме добавления:

PrintWriter pw = new PrintWriter(new FileOutputStream( file, true /* append = true /));

Подробная документация ссылка

0 голосов
/ 04 февраля 2020

Вы можете просто установить флаг добавления в FileOutputStream:

PrintWriter output = new PrintWriter(new FileOutputStream(new File(file), true);
output.append("ID: #" + CL.getID());

Javado c говорит:

Параметры:

file - файл для быть открыт для записи.
append - если true, тогда байты будут записаны в конец файла, а не в начало

0 голосов
/ 04 февраля 2020

Вы можете сделать это, получив все строки файла, добавив нужные строки в конец этого списка, удалив старый файл, а затем переписав новые и старые строки в файл. Это использует Java 8 и упрощает

public static void addLines(String file, String...content) {
    Path path = Paths.get(file);
    List<String> existingContent = Files.readAllLines(path);
    existingContent.addAll(content);
    if (Files.exists(path)) {
        Files.delete(path);
    }
    Files.write(path, existingContent);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...