Как заменить строку в файле java

Обновлено: 07.07.2024

Как заменить строку текста, найденную в текстовом файле?

У меня есть такая строка:

И я хочу обновить его:

Как мне это сделать?

Кстати, я хочу заменить ТОЛЬКО строку, которая была прочитана. НЕ весь файл.

Проверено и работает

Исходный текстовый файл:

Делать посуду0
Накорми собаку0
Убрал мою комнату1

Сделать посуду0
Накорми собаку0
Убрал мою комнату1
----------------------------------
Сделать посуду1
Накорми собаку0
Убрал мою комнату1

Новый текстовый файл:

Сделать посуду1
Накорми собаку0
Убрал мою комнату1

И как примечание, если текстовый файл был:

Сделать посуду1
Накорми собаку0
Убрал мою комнату1

и вы использовали метод replaceSelected("Do the dishes", "1"); , он просто не изменит файл.

Начиная с Java 7 это очень просто и интуитивно понятно.

По сути, вы читаете весь файл в List , редактируете список и, наконец, записываете список обратно в файл.

FILE_PATH представляет Path файла.

Я собирался ответить на этот вопрос. Затем я увидел, что он помечен как дубликат этого вопроса после того, как я написал код, поэтому я опубликую свое решение здесь.

Помните, что вам нужно переписать текстовый файл. Сначала я читаю весь файл и сохраняю его в виде строки. Затем я сохраняю каждую строку как индекс массива строк, ex line one = индекс массива 0. Затем я редактирую индекс, соответствующий строке, которую вы хотите редактировать. Как только это сделано, я объединяю все строки в массиве в одну строку. Затем я записываю новую строку в файл, который записывает поверх старого содержимого. Не беспокойтесь о потере старого контента, так как он был снова записан с редактированием. ниже приведен код, который я использовал.

Если замена имеет другую длину:

  1. Читайте файл, пока не найдете строку, которую хотите заменить.
  2. Прочитайте в память часть после текст, который вы хотите заменить, все это.
  3. Обрежьте файл в начале части, которую вы хотите заменить.
  4. Написать замену.
  5. Запишите остаток файла из шага 2.

Если замена такой же длины:

  1. Читайте файл, пока не найдете строку, которую хотите заменить.
  2. Установите положение файла для начала части, которую вы хотите заменить.
  3. Пишем замену, перезаписываем часть файла.

Это лучшее, что вы можете получить, с ограничениями вашего вопроса. Однако, по крайней мере, рассматриваемый пример заменяет строку одинаковой длины, поэтому второй способ должен работать.

Также имейте в виду: строки Java - это текст Unicode, а текстовые файлы - байты с некоторой кодировкой. Если кодировка UTF8, а ваш текст не является Latin1 (или обычным 7-битным ASCII), вы должны проверить длину закодированного байтового массива, а не длину строки Java.

Ну, вам нужно получить файл с помощью JFileChooser, а затем прочитать строки файла, используя сканер и функцию hasNext ()

как только вы это сделаете, вы можете сохранить строку в переменной и манипулировать содержимым.

просто как заменить строки :), как я это делаю first arg будет имя файла вторая строка назначения третья строка для замены вместо target

Как заменить строку текста, найденную в текстовом файле?

У меня есть строка, например:

И я хочу обновить его:

Как это сделать?

Кстати, я хочу заменить ТОЛЬКО прочитанную строку. НЕ весь файл.

Внизу у меня есть общее решение для замены строк в файле. Но сначала вот ответ на конкретный вопрос под рукой. Вспомогательная функция:

Тогда назовите это:

Исходный текстовый файл:

Сделать посуду0
Накорми собаку0
Убрал мою комнату1

Сделать посуду0
Накорми собаку0
Убрал мою комнату1
----------------------------------
Сделать посуду1
Накорми собаку0
Убрал мою комнату1

Новый текстовый файл:

Сделать посуду1
Накорми собаку0
Убрал мою комнату1

И как примечание, если текстовый файл был:

Сделать посуду1
Накорми собаку0
Убрал мою комнату1

и вы использовали метод replaceSelected("Do the dishes", "1"); , это просто не изменит файл.

Поскольку этот вопрос довольно специфичен, я добавлю более общее решение для будущих читателей (на основе заголовка).

Так как Java 7 это очень просто и интуитивно понятно.

В основном вы читаете весь файл в List , редактируете список и, наконец, записываете список обратно в файл.

FILE_PATH представляет Path файла.

Я собирался ответить на этот вопрос. Затем я увидел, что он стал отмеченным как дубликат этого вопроса, после того как я написал код, поэтому я отправлю свое решение здесь.

Помните, что вам нужно перезаписать текстовый файл. Сначала я прочитал весь файл и сохранил его в строке. Затем я сохраняю каждую строку как индекс строкового массива, ex line one = массив index 0. Затем я редактирую индекс, соответствующий строке, которую вы хотите отредактировать. Как только это будет сделано, я объединю все строки в массиве в одну строку. Затем я пишу новую строку в файл, который пишет поверх старого содержимого. Не беспокойтесь о потере старого контента, поскольку он был снова написан с помощью редактирования. ниже - код, который я использовал.

Если замена имеет разную длину:

  • Прочитайте файл, пока не найдете строку, которую хотите заменить.
  • Прочитайте в памяти часть после текста, которую вы хотите заменить, и все это.
  • Усечь файл в начале части, которую вы хотите заменить.
  • Запишите замену.
  • Запишите оставшуюся часть файла с шага 2.

Если замена имеет одинаковую длину:

  • Прочитайте файл, пока не найдете строку, которую хотите заменить.
  • Задайте позицию файла для начала части, которую вы хотите заменить.
  • Запишите замену, переписав часть файла.

Это лучшее, что вы можете получить, с ограничениями на свой вопрос. Однако, по крайней мере, рассматриваемый пример заменяет строку той же длины, поэтому второй способ должен работать.

Также имейте в виду: строки Java - это текст Unicode, а текстовые файлы - это байты с некоторой кодировкой. Если кодировка UTF8 и ваш текст не является латинским (или простой 7-разрядный ASCII), вы должны проверить длину закодированного байтового массива, а не длину строки Java.

Я пишу программу с текстовым файлом на java, мне нужно изменить конкретную строку в файле. Например, в файле есть строка (файл содержит много строк) типа «имя пользователя, пароль, e, d, b, c, a», и я хочу изменить его на «имя пользователя, пароль, f, e, d, b. , c "Я много искал, но ничего не нашел. Как с этим бороться?

4 ответа

Вы можете попробовать следующее: сначала прочитайте файл построчно и проверьте каждую строку, существует ли в ней строка, которую вы хотите заменить, замените ее и запишите содержимое в другой файл. Делайте это, пока не дойдете до EOF.

Если вы хотите использовать один и тот же файл, сохраните содержимое в буфере (массив строк или список), а затем запишите содержимое буфера в тот же файл.

В общем, вы можете сделать это за 3 шага:

  1. Прочитать файл и сохранить его в строке
  2. Измените строку по своему усмотрению (модификация "имя пользователя, пароль . ")
  3. Записать строку в файл

Вы можете найти инструкции для каждого шага в Stackoverflow.

Вот возможное решение, работающее непосредственно с Stream:

Если ваш файл похож на этот:

После загрузки файла в String вы можете сделать что-то вроде этого:

После редактирования всего, что вы хотите отредактировать, сохраните отредактированную строку в файл.

Есть много способов решить эту проблему. Прочтите документацию String, чтобы познакомиться с операциями с String. Без вашего кода мы не сможем вам помочь.

Алгоритм выглядит следующим образом:

Откройте временный файл, чтобы сохранить отредактированную копию.

Прочитать входной файл построчно.

Проверьте, нужно ли заменить текущую строку
Для этого могут использоваться различные методы класса String :

  • equals : сравнивает эту строку с указанным объектом. Результат будет истинным тогда и только тогда, когда аргумент не равен нулю и является объектом String, который представляет ту же последовательность символов, что и этот объект.
  • equalsIgnoreCase : сравнивает эту строку с другой строкой, игнорируя регистр.
  • contains : возвращает истину тогда и только тогда, когда эта строка содержит указанную последовательность значений символов.
  • matches (String regex) : указывает, соответствует ли эта строка заданному регулярному выражению.
  • startsWith : проверяет, начинается ли эта строка с указанного префикса (с учетом регистра).
  • endsWith : проверяет, начинается ли эта строка с указанного префикса (с учетом регистра). Can't load full resultsTry againRetrying. Retrying.

Существуют и другие функции предиката: contentEquals , regionMatches

Если обязательным условием является true , замените currentLine:

Или используйте String методы replace/replaceFirst/replaceAll , чтобы сразу заменить содержимое.

День добрый! Условие задачи следующее. Необходимо открыть файл в потоке BufferedReader, и заменить четвертую строку в этом файле на строку "New Data"! Допилил код до такого состояние, фактически нужно написать метод replace! Подскажите, решение. Заранее спасибо.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Заменить значение в скомпилированном class-файле
С наступающим вас дорогие форумчане! Ввиду рабочей деятельности занесло меня в ваш мир Java. Суть.

Найти строку в файле
У меня есть словарь fullVoc.txt. Мне нужно, чтобы программа проверила, есть ли слово, введенное.

Найти строку в текстовом файле
Добрый день. подскажите пожалуйста как найти определенную строку в текстовом файле, например мне.

Заменить строку на нужном месте
Есть строка, которая вводятся из клавиатуры. Например: Меня зовут Бахус. Теперь нужно заменить.

у вас все строки после 3ей таким образом поменяются. Zurs, просто считывай файл и считай строки, когда четвертая строка то пиши Новые данные, а во всех остальных случаях передавай как есть, тогда обойдешься одним условием, без дополнительных методов. Sanan07, если делать по - твоему мы данные запишем в новый файл, а как провести замену в самом файле "input.txt" ? Или подскажите как можно удалить файл "input.txt" и переименовать файл с результатом "output.txt"? + Я так понял четкого способа "заменить" строку номер 4 нет?

Заменить переход на новую строку пробелом
Даны файлы f и g. Записать в файл h последовательно элементы f и g с сохранением порядка и через.


Найти в текстовом файле строку, в которой количество слов наибольшее, и вывести ее
Надо найти в текстовом файле строку, в которой количество слов наибольшее и вывести ее. Я считываю.


Как заменить строку вывода на консоль во время выполнения?
С помощью чего можно реализовать такою задачку: Пишем System.out.println("Hello");, а на консоль.

Заменить строку и столбец матрицы, которые содержат минимальный элемент, строкой и столбцом из нулей
замените строку и столбец которые содержат минимальный элемент массива строкой и столбцом из нулей

Примеры реализации операций, которые модифицируют текстовые файлы. Классы FileReader , FileOutputStream , PrintStream

Содержание

  • 1. Функция CountLinesInFile() . Вычислить количество строк в символьном файле
  • 2. Функция GetLinesFromFile() . Получить строки файла в виде массива строк типа String[]
  • 3. Функция WriteLinesToFile() . Записать массив типа String[] в файл
  • 4. Функция ReplaceStringInFile() . Заменить указанною строку в текстовом файле
  • 5. Функция SortLinesInFile() . Сортировка строк в файле методом вставки
  • 6. Запись/чтение массива целых чисел в текстовый файл

Поиск на других ресурсах:

1. Функция CountLinesInFile() . Вычислить количество строк в символьном файле

Для вычисления количества строк в символьном файле можно применить следующую функцию

Использование функции в другом программном коде может быть, например, таким

Далее приведен пример возможного использования функции:

3. Функция WriteLinesToFile() . Записать массив типа String[] в файл

При работе с файлами полезной может быть функция записи массива строк типа String[] в файл. Функция использует возможности классов FileOutputStream и PrintStream .

4. Функция ReplaceStringInFile() . Заменить указанною строку в текстовом файле

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

  • получить строки файла в виде массива String[] ;
  • заменить строку в массиве;
  • записать массив обратно в файл.

По схожему алгоритму можно реализовать любые другие операции с файлами. Для чтения строк из файла и их записи в файл можно использовать функции из пунктов 2, 3 данной темы.

Текст функции ReplaceStringInFile() следующий.

Использование функции может быть, например, следующим

5. Функция SortLinesInFile() . Сортировка строк в файле методом вставки

Сортировка строк происходит по тому самому принципу, который описан в пункте 4. Сначала строки файла копируются во временный массив типа String[] . Затем происходит сортировка временного массива. На последнем шаге отсортированный массив копируется обратно в файл.

В своей работе функция SortLinesInFile() использует две функции GetLinesFromFile() и WriteLinesToFile() , реализация которых описывается в пунктах 2, 3.

Текст функции следующий.

Использование функции может быть следующим

6. Запись/чтение массива целых чисел в текстовый файл. Пример

В примере приведен программный код, который выполняет следующую работу:

  • записывает в файл массив целых чисел;
  • зчитывает массив целых чисел из файла.

Для выполнения задачи разработан класс ReadWriteArrayFile , в котором реализованы два метода:

По данному примеру можно реализовывать собственные методы, которые выполняют:

Читайте также: