Как записать число в java-файл
Обновлено: 21.11.2024
Самый простой способ записи текста в файл требует использования класса PrintWriter из стандартного пакета java.io. Класс PrintWriter имеет знакомые методы print() и println(), которые мы использовали для записи в консоль. Следующая программа записывает в текстовый файл название четырех океанов.
Теперь обсудите приведенную выше программу шаг за шагом:
На шаге 1 вы импортируете пакет для использования класса PrintWriter.
На шаге 2 вы создаете объект PrintWriter и связываете его с файлом hello.txt .
На шаге 3 вы сохраняете выходные данные в файле oceans.txt.
На шаге 4 после завершения вывода вы закрываете выходные файлы с помощью метода close.
Добавление предложения throws в заголовок метода
Во время выполнения программы могут происходить разные вещи. Например, предположим, что вы создаете объект PrintWriter и передаете имя файла его конструктору. Объект PrintWriter пытается создать файл, но неожиданно диск заполнен, и файл не может быть быть создан. Если такие вещи случаются, мы говорим, что произошло исключение. Если в методе возникает исключение, то метод должен либо обработать исключение, либо выдать его для обработки вызывающей средой.
В следующей главе вы узнаете все об исключениях, а сейчас мы просто позволим нашим методам генерировать любые исключения, которые могут возникнуть. Например, наш основной метод должен выглядеть так:
Когда приведенная выше программа скомпилирована и запущена, выходные данные сохраняются в текстовом файле oceans.txt. На следующем рисунке показано содержимое файла, отображаемое в Блокноте.
Добавление данных в файл
Помните, что если файл, который вы открываете с помощью объекта PrintWriter с именем, уже существует в каталоге, он будет удален, и будет создан новый пустой файл с тем же именем. Часто полезно иметь возможность добавлять данные в существующий файл, а не перезаписывать его. Чтобы добавить данные в существующий файл, вы можете использовать класс FileWriter. Вы передаете конструктору FileWriter два аргумента: имя файла и логическое значение true. Вот пример:
Все данные, записанные в файл, будут добавлены к существующему содержимому файла. (Если файл не существует, он будет создан.)
При создании объекта Printwriter вы передаете ссылку на объект FileWriter в качестве аргумента конструктору Printwriter. Например, посмотрите на следующий код:
Вот полный пример:
Когда приведенная выше программа скомпилирована и запущена, выходные данные добавляются в текстовый файл oceans.txt. На следующем рисунке показано содержимое файла, отображаемое в Блокноте.
Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Подробнее о двунаправленных символах Юникода
package com .durianapp.helloservlet.dao ; |
импорт java.io.BufferedReader ; |
импорт java.io.File ;< /td> |
импорт java.io.FileReader ; |
импорт java.io.FileWriter ; | импорт java.io.IOException ; |
импорт java.io.PrintWriter ; |
открытый класс FileDao |
public int getCount() |
int count = 0 ; |
FileReader fr = null ;< /td> |
BufferedReader br = null ; |
PrintWriter Writer = null ; |
попытаться |
Файл f = новый файл (" FileCounter.initial " ); |
if ( ! f . exists()) tr> |
f . createNewFile(); |
writer = new PrintWriter ( new FileWriter (f)); |
writer . print( 0 ); |
> |
if (writer != null ) Writer . close(); |
fr = новый FileReader (f); |
br = новый BufferedReader (fr); td> |
Первоначальная строка = br . readLine(); |
count = Integer . parseInt(initial); |
> catch ( Exception e) |
if (writer != null ) Writer . close(); |
> |
if (br != null ) |
попробуй |
br . close(); |
> catch ( Исключение e) |
> |
> |
количество возвратов; |
> |
public void save ( int count ) генерирует IOException |
FileWriter fw = null ; |
PrintWriter pw = null ; |
fw = новый FileWriter (" FileCounter.Initial " ); |
pw = новый PrintWriter (fw); |
pw .print(count); |
if (pw != null ) pw .close(); |
> |
> |
Вы не можете выполнить это действие в данный момент.
Вы вошли в другую вкладку или окно. Перезагрузите, чтобы обновить сеанс. Вы вышли на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.
Класс Scanner полезен не только для чтения ввода, который пользователь вводит в панель вывода, но также может использоваться для чтения текстовых данных из файла. Чтобы настроить сканер для чтения с панели вывода, мы используем синтаксис
Чтобы настроить сканер для чтения из текстового файла, мы используем синтаксис
где number.txt — это имя текстового файла, из которого мы хотим прочитать.
Одна небольшая сложность, с которой вы столкнетесь при попытке использовать приведенный выше код для создания сканера для чтения из файла, заключается в том, что сканеру требуется объект File, чтобы сообщить ему, где находится файл, из которого он должен читать. К сожалению, создание объекта File может вызвать исключение: если файл, который мы назвали, не существует, Java может сгенерировать исключение FileNotFound. NetBeans заметит эту возможность и заставит вас включить некоторый дополнительный код, который может перехватить это исключение и обработать его, если оно возникнет. Код ниже позаботится об этом:
Если мы попытаемся открыть несуществующий файл, команда new File("numbers.txt") создаст исключение, которое заставит нас войти в блок catch. В блоке catch мы можем сообщить объекту исключения, чтобы он выводил дополнительные сведения о том, что пошло не так, на панель вывода.
В дополнение к коду обработки исключений вам также потребуется разместить оператор импорта в верхней части вашей программы, чтобы импортировать класс File:
Создание текстового файла для чтения
Чтобы создать текстовый файл в NetBeans, сначала щелкните проект правой кнопкой мыши на панели проектов. (Проект — это то, что рядом со значком кофейной чашки.) В контекстном меню выберите параметр «Создать/Другое».
В появившемся диалоговом окне выберите категорию «Другое» в нижней части списка категорий типов файлов, а затем выберите «Пустой файл» в списке типов файлов справа. Нажмите «Далее», чтобы перейти ко второй части диалогового окна «Новый файл».
В этом диалоговом окне вы вводите имя файла. При нажатии кнопки "Готово" создается и открывается текстовый файл, в который вы можете начать вводить данные.
Если вам потребуется найти текстовый файл позже, вы сможете получить к нему доступ на панели "Файлы" в NetBeans.
Первый пример программы — чтение чисел из текстового файла
Вот код первого простого примера программы, который демонстрирует, как читать список целых чисел из текстового файла:
Эта программа открывает сканер для чтения из текстового файла с именем "numbers.txt". Если входного файла нет, программа напечатает сообщение и затем завершит работу, иначе мы перейдем к чтению данных из файла. Когда сканер открыт для файла, мы можем использовать обычную команду nextInt() для чтения следующего доступного целого числа из файла. Программа попытается прочитать все числа в текстовом файле и напечатать их на панели вывода.
Одна из сложностей с вводом из файлов заключается в том, что мы можем не знать заранее, сколько чисел содержится в текстовом файле. Чтобы помочь в этом, класс Scanner предлагает полезный метод hasNextInt(), который возвращает true, если из файла доступно больше чисел для чтения, и false, когда мы читаем до конца файла. Как видно из примера программы, мы можем использовать hasNextInt() для управления циклом while, который считывает числа из файла до тех пор, пока не будут прочитаны все числа.
Проблема поиска
Вот типичный пример задачи поиска: задан список чисел в файле, которые появляются в произвольном порядке, найти наименьшее и наибольшее число в файле.
Чтобы решить эту проблему, мы настроили две переменные: одну для хранения наименьшего числа, которое мы видели до сих пор, и одну для хранения самого большого числа, которое мы видели до сих пор. Мы начинаем с чтения первого числа из этого файла: это число одновременно является и самым маленьким, и самым большим числом, которое мы видели до сих пор. Затем, когда мы читаем остальные числа в файле, мы сравниваем каждое новое число с этими переменными, чтобы увидеть, нашли ли мы новое наибольшее или наименьшее число.
Запись в файл
Иногда мы сталкиваемся с тем, что пишем программы, которые генерируют много вывода.Если мы хотим сохранить этот вывод, чтобы использовать его позже, мы можем сделать так, чтобы программа печатала свой вывод в файл, а не в панель вывода в NetBeans.
В следующем примере показано, как это сделать. Для этого примера я взял один из примеров из лекции о циклах и переписал его так, чтобы вывод выводился в файл, а не в System.out. Примером является программа, которая генерирует список всех простых чисел от 1 до 1000.
При работе с корпоративным приложением иногда необходимо писать файлы на Java, например. запись пользовательских отчетов в файловую систему. Хотя существует несколько способов написания файлов на Java, давайте быстро рассмотрим некоторые из них для быстрого ознакомления, когда это необходимо.
Files.writeString() — начиная с Java 11
С помощью метода writeString(), представленного в Java 11, мы можем записать строку в файл с помощью однострочного оператора.
Записать файл с помощью FileChannel
FileChannel можно использовать для чтения, записи, отображения и управления файлом.
Если мы пишем большие файлы, FileChannel может быть быстрее, чем стандартный ввод-вывод.
Файловые каналы безопасны для использования несколькими одновременными потоками.
Java 7 — Files.write()
В Java 7 появился служебный класс Files, и мы можем записать файл, используя его функцию write(), а внутри он использует OutputStream для записи массива байтов в файл.
Запись Java в файл с использованием BufferedWritter
BufferedWritter — самый простой способ записи содержимого в файл. Он записывает текст в поток вывода символов, буферизуя символы, чтобы обеспечить эффективную запись отдельных символов, массивов и строк.
Если не требуется оперативный вывод, рекомендуется обернуть BufferedWriter вокруг любого модуля записи, чьи операции write() могут быть дорогостоящими, например FileWriter и OutputStreamWriter .
Поскольку он выполняет буферизацию перед записью, это приводит к меньшему количеству операций ввода-вывода и повышает производительность.
Запись файла с помощью FileWriter/PrintWriter
FileWriter — самый чистый способ записи файлов. Синтаксис не требует пояснений, его легко читать и понимать. FileWriter записывает непосредственно в файл (меньшая производительность) и должен использоваться только при меньшем количестве операций записи.
Используйте PrintWriter для записи форматированного текста в файл. Этот класс реализует все методы печати, найденные в PrintStream, поэтому вы можете использовать все форматы, которые вы используете с операторами System.out.println().
Записать файл с помощью FileOutputStream
Используйте FileOutputStream для записи двоичных данных в файл. FileOutputStream предназначен для записи потоков необработанных байтов, таких как данные изображения. Для записи потоков символов рассмотрите возможность использования FileWriter .
Запись файла с использованием DataOutputStream
DataOutputStream позволяет приложению записывать примитивные типы данных Java в выходной поток переносимым способом. Затем приложение может использовать поток ввода данных для обратного считывания данных.
Java предоставляет API java.nio.file для чтения и записи файлов. Класс InputStream является надклассом всех классов, представляющих входной поток байтов.
1.2. Чтение файла в Java
Чтобы прочитать текстовый файл, вы можете использовать метод Files.readAllBytes. Использование этого метода показано в следующем листинге.
Чтобы прочитать текстовый файл построчно в структуру списка типа String, вы можете использовать метод Files.readAllLines.
Files.readAllLines использует кодировку символов UTF-8. Это также гарантирует, что файл будет закрыт после прочтения всех байтов или в случае возникновения исключения.
1.3. Чтение и фильтрация построчно
Метод Files.lines позволяет читать файл построчно, предлагая поток. Этот поток можно фильтровать и отображать. Files.lines не закрывает файл после того, как его содержимое прочитано, поэтому его следует заключить в оператор try-with-resource.
В следующем примере ненужные пробелы в конце каждой строки удаляются, а пустые строки фильтруются.
В следующем примере показано, как отфильтровать строки на основе определенного регулярного выражения.
В следующем примере извлекается строка, начинающаяся с "Bundle-Version:", из файла MANIFEST.MF, расположенного в папке META-INF. Он удаляет префикс и удаляет все начальные и конечные пробелы.
1.4. Написание файла на Java
Чтобы записать файл, вы можете использовать следующий метод:
1,5. Список всех файлов и подкаталогов с помощью Files.list()
Вы можете получить доступ к файлам, относящимся к текущему каталогу выполнения вашей программы Java. Чтобы получить доступ к текущему каталогу, в котором выполняется ваша программа Java, вы можете использовать следующий оператор.
1.6. Как определить текущий каталог
2. Упражнение: чтение и запись файлов
Создайте новый проект Java с именем com.vogella.java.files. Создайте следующий класс FilesUtil.java.
Чтобы протестировать эти методы, создайте текстовый файл с именем file.txt с некоторым содержимым в папке вашего проекта.Создайте следующий основной класс и запустите его.
3. Пример: рекурсивный список всех файлов каталога
Java 8 предоставляет хороший поток для обработки всех файлов в дереве.
4. Пример: удаление каталога со всеми подкаталогами и файлами
Чтобы удалить каталог и все его содержимое.
5. Чтение ресурсов из вашего проекта/банки
Вы можете считывать ресурсы из своего проекта или файла jar через цепочку методов .getClass().getResourceAsStream() из любого объекта.
Читайте также: