Как отредактировать файл java

Обновлено: 04.07.2024

У меня есть текстовый файл, который я хочу редактировать, используя Java. У него много тысяч строк. Я в основном хочу перебрать строки и изменить /редактировать /удалить текст. Это должно будет происходить довольно часто.

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

  • Откройте существующий файл с помощью BufferedReader
  • Прочитайте каждую строку, внесите изменения в каждую строку и добавьте ее в StringBuilder
  • После прочтения и изменения всего текста запишите содержимое StringBuilder в новый файл
  • Замените старый файл новым файлом

Мне кажется, что это решение несколько «хакерское», особенно если в моем текстовом файле тысячи строк.

Кто-нибудь знает лучшее решение?

Я недавно не делал этого на Java, но запись всего файла в память кажется плохой идеей.

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

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

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

Вы можете использовать apache IOUtils, который имеет следующий метод.

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

Нет причин для буферизации всего файла.

Просто напишите каждую строку как прочитанную, вставьте строки при необходимости, удалите строки при необходимости, замените строки при необходимости.

По сути, вам не придется заново создавать файл оптом, особенно если это просто текстовый файл.

Что это за данные? Вы контролируете формат файла?

Если файл содержит пары имя /значение (или аналогичные), вам может повезти с Свойства или, возможно, что-то собираем вместе, используя драйвер JDBC для плоских файлов.

В качестве альтернативы, вы рассматривали возможность записи данных не так часто? Работа с копией вашего файла в памяти должна быть относительно тривиальной. Если нет внешних ресурсов, которые требуют обновления файла в режиме реального времени, то нет необходимости каждый раз заходить на диск, чтобы внести изменения. Вы можете запустить запланированное задание для записи периодических обновлений на диск, если вы беспокоитесь о резервном копировании данных.

Как правило, вы не можете редактировать файл на месте; это просто очень длинная последовательность символов, которая включает символы новой строки. Вы можете редактировать на месте, если ваши изменения не меняют количество символов в каждой строке.

Разве вы не можете использовать регулярные выражения, если знаете, что хотите изменить? Джакартское регулярное выражение , вероятно, должно сработать.

После этого вам нужно создать ByteBuffer , где вы будете читать из FileChannel

это выглядит примерно так:

Надеюсь, что мой ответ поможет вам!

Вы можете использовать RandomAccessFile в Java, чтобы изменить файл при одном условии: Размер каждой строки должен быть зафиксирован в противном случае, когда новая строка записывается обратно, она может переопределить строку в следующей строке.

Поэтому в моем примере я установил длину строки равной 100 и добавив пробел при создании файла и обратной записи в файл.

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

Вы можете изменить текстовый файл на java, сохранив, нажав «Сохранить как» и сохранив расширение * .java.

Файл с расширением .JAR является архивным файлом Java, который используется для хранения программ и игр на Java в одном файле. Некоторые содержат файлы, которые заставляют их работать как отдельные приложения, а другие содержат библиотеки программ для использования другими программами.

JAR-файлы сжаты в ZIP и часто хранят такие вещи, как файлы CLASS, файлы манифеста и ресурсы приложения, такие как изображения, звуковые клипы и сертификаты безопасности. Так как они могут хранить сотни или даже тысячи файлов в сжатом формате, файлы JAR легко обмениваться и перемещать.

Мобильные устройства с поддержкой Java могут использовать файлы JAR в качестве файлов игры, а некоторые веб-браузеры содержат темы и надстройки в формате JAR.

Как открыть файлы JAR

Java Runtime Environment (JRE) должна быть установлена ​​для открытия исполняемых файлов JAR, но обратите внимание, что не все файлы JAR являются исполняемыми файлами. После установки вы можете просто дважды щелкнуть файл JAR, чтобы открыть его.

Некоторые мобильные устройства имеют встроенную JRE. После установки приложения Java также можно открывать в веб-браузере, например Firefox, Safari, Edge или Internet Explorer (но не в Chrome).

Поскольку JAR-файлы сжимаются с помощью ZIP, любой распаковщик файлов может открыть его, чтобы увидеть содержимое, которое находится внутри. Это включает в себя такие программы, как 7-Zip, PeaZip и jZip

Поскольку вам могут потребоваться разные программы для открытия разных файлов JAR, см. Как изменить программу по умолчанию для определенного расширения файла в Windows, если она автоматически открывается в программе, с которой вы не хотите ее использовать.

Ошибки открытия файлов JAR

Из-за настроек безопасности в операционной системе Windows и в некоторых веб-браузерах весьма часто можно увидеть ошибки при попытке доступа к приложениям Java.

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

Также убедитесь, что вы используете последнюю версию Java. Если нет, вернитесь к ссылке JRE выше и установите последнюю версию.

Как конвертировать файл JAR

Вы можете создавать исполняемые файлы JAR в приложениях программирования, таких как Eclipse.

Файлы WAR являются файлами Java Web Archive, но вы не можете преобразовать файл JAR напрямую в файл WAR, поскольку формат WAR имеет особую структуру, которой нет в JAR. Вместо этого вы можете создать WAR-файл и затем добавить JAR-файл в каталог lib, чтобы классы в JAR-файле были доступны для использования. WizToWar может помочь вам сделать это.

Создать ZIP-файл из JAR-файла так же просто, как переименовать расширение файла из .JAR в .ZIP. Это на самом деле не выполняет преобразование файлов, но позволяет программам, использующим файлы ZIP, например, 7-Zip или PeaZip, легче открывать файл JAR.

Дополнительная информация о формате JAR

Если вам нужна помощь в упаковке программ в файлы JAR, перейдите по этой ссылке для получения инструкций на веб-сайте Oracle.

Только один файл манифеста может быть включен в архив JAR, и он должен находиться в расположении META-INF/MANIFEST.MF . Он должен соответствовать синтаксису имени и значения, разделенных двоеточием, например Manifest-Version: 1.0 . Этот файл MF может указывать классы, которые должно загружать приложение.

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

Чтобы работать с файлами, есть шикарный утилитный класс — java.nio.file.Files . У него есть методы просто на все случаи жизни. Все методы этого класса статические и работают с объектами типа Path. Методов очень много, поэтому мы рассмотрим только основные:

Метод Описание
Создает новый файл с путем path
Создает новую директорию
Создает несколько директорий
Создает временный файл
Создает временную директорию
Удаляет файл или директорию, если она пуста
Копирует файл
Перемещает файл
Проверяет, что путь — это директория, а не файл
Проверяет, что путь — это файл, а не директория
Проверяет, что объект по заданному пути существует
Возвращает размер файла
Возвращает все содержимое файла в виде массива байт
Возвращает все содержимое файла в виде строки
Возвращает все содержимое файла в виде списка строк
Записывает в файл массив байт
Записывает в файл строку
Возвращает коллекцию файлов (и поддиректорий) из заданной директории

2. Создание файлов и директорий

Файлы и директории создавать очень просто. Убедимся на примерах:

Код Примечание
Создает файл
Создает директорию
Создает директорию и все нужные поддиректории, если их не существует.

3. Копирование, перемещение и удаление

Копировать, перемещать и удалять файлы так же легко. На директории это тоже распространяется, но они должны быть пустые.

Код Примечание
Копирует файл
Перемещает и переименовывает файл
Удаляет файл

4. Проверка типа файла и факта существования

Когда у вас есть какой-то путь, полученный извне, вы бы хотели знать, это файл или директория. Ну и вообще: существует такой файл/директория или нет?

Для этого тоже есть специальные методы. Так же можно легко узнать длину файла:

Код Примечание

5. Работа с содержимым файла

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

Я пишу программу с текстовым файлом на 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 , чтобы сразу заменить содержимое.

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