Как заменить строку в файле java
Как заменить строку текста, найденную в текстовом файле?
У меня есть такая строка:
И я хочу обновить его:
Как мне это сделать?
Кстати, я хочу заменить ТОЛЬКО строку, которая была прочитана. НЕ весь файл.
Проверено и работает
Исходный текстовый файл:
Делать посуду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. Затем я редактирую индекс, соответствующий строке, которую вы хотите редактировать. Как только это сделано, я объединяю все строки в массиве в одну строку. Затем я записываю новую строку в файл, который записывает поверх старого содержимого. Не беспокойтесь о потере старого контента, так как он был снова записан с редактированием. ниже приведен код, который я использовал.
Если замена имеет другую длину:
- Читайте файл, пока не найдете строку, которую хотите заменить.
- Прочитайте в память часть после текст, который вы хотите заменить, все это.
- Обрежьте файл в начале части, которую вы хотите заменить.
- Написать замену.
- Запишите остаток файла из шага 2.
Если замена такой же длины:
- Читайте файл, пока не найдете строку, которую хотите заменить.
- Установите положение файла для начала части, которую вы хотите заменить.
- Пишем замену, перезаписываем часть файла.
Это лучшее, что вы можете получить, с ограничениями вашего вопроса. Однако, по крайней мере, рассматриваемый пример заменяет строку одинаковой длины, поэтому второй способ должен работать.
Также имейте в виду: строки 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 шага:
- Прочитать файл и сохранить его в строке
- Измените строку по своему усмотрению (модификация "имя пользователя, пароль . ")
- Записать строку в файл
Вы можете найти инструкции для каждого шага в 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. Мне нужно, чтобы программа проверила, есть ли слово, введенное.
Найти строку в текстовом файле
Добрый день. подскажите пожалуйста как найти определенную строку в текстовом файле, например мне.
Заменить строку на нужном месте
Есть строка, которая вводятся из клавиатуры. Например: Меня зовут Бахус. Теперь нужно заменить.
Заменить переход на новую строку пробелом
Даны файлы 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 , в котором реализованы два метода:
По данному примеру можно реализовывать собственные методы, которые выполняют:
Читайте также: