Java. Удаление слова из txt файла

289
11 октября 2017, 06:03

Добрый день.

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

   public static void PrintToFile(String ManufacturerFilePath, String NewManufacturer) {
    File file = new File(ManufacturerFilePath);
    FileWriter writer = null;
    try {
        writer = new FileWriter(file, true);
        writer.write(NewManufacturer);
        writer.write("\r\n");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
//Чтение из файла.
public static void ReadFromFile() {
    try (FileReader reader = new FileReader("D:\\Warehouse\\ManufacturerList.txt")) {
        int readIt;
        while ((readIt = reader.read()) != -1) {
            System.out.print((char) readIt);
        }
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }
}

В txt записывается информация в следующем виде:

Производитель1

Производитель2

Производитель3

Хочу использовать метод, который будет удалять производителя из файла (без перезаписи в новый файл) исходя из введенного пользователем названия производителя. Т.е. пользователь вводить "Производитель2" - удаляю его из txt файл. Получаю в итоге файл с содержанием:

Производитель1

Производитель3

Кажется понял, как удалять строки из файла, но для этого необходимо:

  1. Сравнить производителя, которого ввел пользователь с тем, что есть в файле.

  2. В случае соответствия - найти строку.

  3. Удалить строку.

Но возможно ли сделать проще? Т.е. найти в файле слово, которое соответствует введенному пользователем и удалить его?

P.S. В этом совсем новичок, поэтому буду особенно благодарен за простые решения :)

Сообщение для обхода ограничения правки.

Answer 1

Смею предположить, что файл - внешняя для вашего приложения структура. Поэтому так или иначе его нужно прочитать в массив байт, или построчной или каким нибудь другим способом. Далее определить вхождение первого и последнего байта(строки) и удалить из массива байт(массива строк). И придется записать обратно(хоть и не в другой файл, но все же полный контент положить обратно в файл).

READ ALSO
Java, JDBC, GROUP BY ROLLUP

Java, JDBC, GROUP BY ROLLUP

В 1С при обходе результата запроса можно обходить запрос иерархическиКаждый итоговый результат содержит кроме полей, еще и вложенный результат,...

178
Поиск элемента в регулярном выражении

Поиск элемента в регулярном выражении

Добрый день! Пишу регулярное выражение для автоматической загрузки файлов с сайта, столкнулся с проблемой не могу найти элемент с тегом <a href>...

162
Hibernate не хочет преобразовывать результат

Hibernate не хочет преобразовывать результат

Делаю выборку через createSQLQuery, возвращаться должна таблица ProductBrand

128
Непредвиденная появление

Непредвиденная появление

Добрый день, пытаюсь запустить WebSphere, но ничего не выходитКогда пытаюсь запустить через ярлык, то ничего не понятно, консоль быстро закрывается

151