Вывести содержимое текстового файла java

Содержание
  1. 5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл
  2. Различные способы чтения файла на Java
  3. Чтение двоичных файлов и текстовых файлов
  4. 1. BufferedReader Читает файл
  5. 2. FileInputStream – Считывание двоичных файлов в байты
  6. 3. Файлы – Чтение файла в список строк
  7. 4. Сканер – Считывает текстовый файл в качестве итератора
  8. 5. RandomAccessFile – Чтение файлов в режиме только для чтения
  9. Чтение и запись файлов на Java
  10. Вступление
  11. Потоки ввода-вывода
  12. Потоки символов
  13. Потоки байтов
  14. Потоки Java NIO
  15. Разница между вводом-выводом Java и NIO
  16. Примеры чтения и записи текстовых файлов
  17. Git Essentials
  18. Чтение и запись с помощью программы чтения файлов и пишущей машинки
  19. Чтение и запись с помощью BufferedReader и BufferedWriter
  20. Чтение и запись с помощью FileInputStream и FileOutputStream
  21. Чтение и запись с помощью BufferedInputStream и BufferedOutputStream
  22. Чтение и запись с помощью классов Java.nio
  23. Вывод
  24. Работа с файлами в Java. FileWriter и FileReader

5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл

Как прочитать файл на Java? Мы можем использовать классы ввода-вывода Java для чтения текстовых и двоичных файлов, таких как изображения, pdf и т.д., Используя BufferedReader, FileInputStream.

Автор: Pankaj Kumar
Дата записи

Существует множество различных способов чтения файла на Java. В этом уроке мы рассмотрим 5 различных способов чтения файла на Java.

Различные способы чтения файла на Java

5 классов из API ввода-вывода Java для чтения файлов:

  1. Буферизатор
  2. Поток ввода файлов
  3. Файлы
  4. Сканер
  5. Случайный файл

Чтение двоичных файлов и текстовых файлов

  • Класс FileInputStream считывает данные файла в поток байтов. Поэтому его следует использовать для двоичных файлов, таких как изображения, pdf, мультимедиа, видео и т.д.
  • Текстовые файлы основаны на символах. Мы можем использовать классы Reader , а также потоковые классы для их чтения.
  • Файлы и классы сканера можно использовать для чтения текстовых файлов, а не двоичных файлов.
Читайте также:  Чистить воду народными средствами

Давайте рассмотрим примеры программ для чтения файла на Java.

1. BufferedReader Читает файл

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

BufferedReader эффективен для чтения файла, поскольку он буферизует входные данные из указанного файла. Без буферизации каждый вызов методов read() или readLine() будет считывать байты из файла, затем преобразовываться в символы и возвращаться, что будет очень неэффективно.

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

  1. Прочитайте полный файл в виде строки
  2. Считывайте файл строка за строкой и возвращайте список строк
  3. Подсчитайте вхождение строки в данный файл.

2. FileInputStream – Считывание двоичных файлов в байты

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

Операция чтения FileInputStream используется с массивом байтов, в то время как операция чтения BufferedReader использует массив символов.

3. Файлы – Чтение файла в список строк

Файлы – это служебный класс, который был представлен в версии Java 1.7. Мы можем использовать его метод ReadAllLines() для чтения данных текстового файла в виде списка строк.

4. Сканер – Считывает текстовый файл в качестве итератора

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

5. RandomAccessFile – Чтение файлов в режиме только для чтения

Класс RandomAccessFile позволяет нам читать файл в разных режимах. Это хороший вариант, если вы хотите убедиться, что в файле не выполняется случайная операция записи.

Это все для чтения файла на Java с использованием различных классов из Java IO API.

Источник

Чтение и запись файлов на Java

В этом уроке мы будем читать и записывать файлы на Java с помощью FileReader, FileWriter, BufferedReader, BufferedWriter, FileInputStream, FileOutputStream и т. Д.

Автор: Scott Robinson
Дата записи

Вступление

В этой статье мы погрузимся в Чтение и запись файлов на Java .

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

В этом уроке мы покажем наиболее распространенные способы чтения и записи файлов на Java.

Java предоставляет несколько API (также известных как Java I/O ) для чтения и записи файлов с момента ее первых выпусков. В последующих выпусках ввод-вывод Java был улучшен, упрощен и расширен для поддержки новых функций.

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

Потоки ввода-вывода

Существует два типа потоков, которые вы можете использовать для взаимодействия с файлами:

  1. Потоки символов
  2. Потоки байтов

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

Потоки символов

Потоки символов используются для чтения или записи типа данных символов. Давайте рассмотрим наиболее часто используемые классы. Все эти классы определены в разделе java.io посылка.

Вот некоторые классы, которые вы должны знать, которые можно использовать для чтения символьных данных:

  • Reader : Абстрактный класс для чтения потока символов.
  • InputStreamReader : Класс, используемый для чтения потока байтов и преобразования в поток символов.
  • Средство чтения файлов : Класс для чтения символов из файла.
  • BufferedReader : Это оболочка над классом Reader , которая поддерживает возможности буферизации. Во многих случаях это наиболее предпочтительный класс для чтения данных, поскольку из файла можно прочитать больше данных за один вызов read () , что уменьшает количество фактических операций ввода-вывода с файловой системой.

И вот некоторые классы, которые вы можете использовать для записи символьных данных в файл:

  • Writer : Это абстрактный класс для записи потоков символов.
  • OutputStreamWriter : Этот класс используется для записи потоков символов, а также для преобразования их в потоки байтов.
  • Пишущая машинка : Класс для фактической записи символов в файл.
  • BufferedWriter : Это оболочка над классом Writer , которая также поддерживает возможности буферизации. Это наиболее предпочтительный класс для записи данных в файл, так как в файл может быть записано больше данных за один вызов write () . И , как и BufferedReader , это уменьшает общее количество операций ввода-вывода с файловой системой.

Потоки байтов

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

В этом разделе мы рассмотрим наиболее часто используемые классы. Все эти классы определены в разделе java.io посылка.

Вот классы, используемые для чтения байтовых данных:

  • InputStream : Абстрактный класс для чтения потоков байтов.
  • FileInputStream : Класс для простого считывания байтов из файла.
  • BufferedInputStream : Это оболочка над InputStream , которая поддерживает возможности буферизации. Как мы видели в потоках символов, это более эффективный метод, чем FileInputStream .

А вот классы, используемые для записи байтовых данных:

  • OutputStream : Абстрактный класс для записи байтовых потоков.
  • FileOutputStream : Класс для записи необработанных байтов в файл.
  • ByteOutputStream : Этот класс является оболочкой над OutputStream для поддержки возможностей буферизации. И опять же, как мы видели в потоках символов, это более эффективный метод, чем FileOutputStream благодаря буферизации.

Потоки Java NIO

Java NIO -это неблокирующий API ввода-вывода, который был представлен еще в Java 4 и может быть найден в пакете/| java.nio . С точки зрения производительности это большое улучшение API для операций ввода-вывода.

Буферы, селекторы и каналы являются тремя основными компонентами Java NIO, хотя в этой статье мы сосредоточимся исключительно на использовании классов NIO для взаимодействия с файлами, а не обязательно на концепциях, лежащих в основе API.

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

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

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

Разница между вводом-выводом Java и NIO

Основное различие между этими двумя пакетами заключается в том, что методы read() и write() блокируют вызовы области ввода-вывода Java. Под этим мы подразумеваем, что поток, вызывающий один из этих методов, будет заблокирован до тех пор, пока данные не будут прочитаны или записаны в файл.

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

Примеры чтения и записи текстовых файлов

В предыдущих разделах мы обсуждали различные API, предоставляемые Java, и теперь пришло время использовать эти классы API в некотором коде.

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

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

Примечание : Чтобы избежать путаницы в пути к файлу, пример кода будет считываться и записываться из файла в домашнем каталоге пользователя. Домашний каталог пользователя можно найти с помощью System.getProperty(«user.home»); , который мы используем в наших примерах.

Чтение и запись с помощью программы чтения файлов и пишущей машинки

Давайте начнем с использования классов FileReader и Пишущая машинка :

Оба класса принимают строку, представляющую путь к файлу в их конструкторах. Вы также можете передать Файл объект, а также Файловый дескриптор .

Метод write() записывает допустимую последовательность символов – либо Строку , либо символ[] . Кроме того, он может записать один символ , представленный как int .

Метод read() считывает и возвращает символ за символом, позволяя нам, например, использовать считанные данные в цикле while .

Не забудьте закрыть оба этих класса после использования!

Чтение и запись с помощью BufferedReader и BufferedWriter

Использование BufferedReader и BufferedWriter классов:

Чтение и запись с помощью FileInputStream и FileOutputStream

Использование FileInputStream и FileOutputStream классов:

Чтение и запись с помощью BufferedInputStream и BufferedOutputStream

Использование BufferedInputStream и BufferedOutputStream классов:

Чтение и запись с помощью классов Java.nio

Использование классов java.nio :

Другой способ извлечения содержимого через класс Files , что более важно, если вы не читаете текстовые данные, – это использовать метод ReadAllBytes для чтения данных в массив байтов:

В случае , если вы заинтересованы в использовании потоков с java.nio , вы также можете использовать приведенные ниже методы, предоставляемые классом Files , которые работают так же, как потоки, которые мы рассмотрели ранее в статье:

Вывод

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

Источник

Работа с файлами в Java. FileWriter и FileReader

*Это Говард Стивен Берг (Howard Stephen Berg), один из самых быстро читающих людей в мире 🙂 А FileWriter — Уильям Шекспир.

  • написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
  • это одна из статей из нашего «Самоучителя по Java»

Рассмотрим работу с FileWriter и FileReader:

  • с помощью FileWriter мы можем создавать файлы
  • с помощью FileReader — считывать их
Внимание:

Потоки FileWriter и FileReader немного отличаются от того, с чем мы встречались ранее. Работая с ними, понадобится всегда помнить 3 важных момента:

Перед тем, как вызывать какие-нибудь методы для работы с файлами, нужно объявить FileWriter/FileReader:

Но Eclipse может не распознать FileReader/FileWriter и начнет ругаться. Если такое произойдет, посмотрите, импортировали ли вы библиотеку java.io.*. Для этого в самой первой строчке напишите:

2. Нужно закрыть поток

FileWriter/FileReader — это потоки, их нужно не только «открыть» (то-есть объявить), но и «закрыть» . Представьте, что Вы открыли кран. Нельзя же уйти из дому, оставив воду литься?

Это правило работает и для других потоков — кроме стандартных System.in и System.out.

Закрыть поток можно с помощью .close() :

3. Допишите «волшебную фразу».

В программировании очень важна безопасность . А работа с FileWriter/FileReader — это небезопасно , в процессе может возникнуть масса разных ошибок. Это беспокоит Eclipse (или IntellijIdea — смотря чем пользуетесь), и программу она просто так не запустит. Помните, что к методу нужно дописать «throws Exception» :

Итак, еще раз акцентируем внимание — всегда Вы должны помнить о 3 моментах:

  1. Объявить
  2. Не забыть закрыть поток
  3. Дописать «throws Exception»

И еще, потоки FileWriter и FileReader воспринимают все файлы как текстовые:

FileWriter

Теперь представим, что Вы начинаете использовать FileWriter.

1. Объявление.

Как Вы помните, нужно не забыть импортировать библиотеки java.io.* и дописать «волшебную фразу» к методу, где Вы собираетесь объявить FileWriter.

Объявляем, как помните, почти как Scanner:

Объявили. А что теперь можно делать? Теперь пора пользоваться возможностями FileWriter!

Основной метод FileWriter — это метод .write() .

Мало? Да, но посмотрите, как много с ним можно сделать:

*обратите внимание — мы написали нашу «волшебную фразу» и в методе main, и в методе newFile.

Так мы можем записать числа от k1 до k2, от 2 до 9, в наш файл file1.txt. Можно записывать только четные или нечетные числа, какой-нибудь текст, и многое другое.

2. Переход на следующую строку

Но мы Вам кое-чего не сказали. Если запустить код из прошлого пункта, получится:

Если понадобится вывести числа в столбик, понадобится добавить » \n » от «new line», новая строка. Запишем в файл стих:

Каждый раз, когда мы хотели, чтобы программа переходила на новую строку, мы ставили » \n «:

Теперь вы знаете, как вывести числа с новой строки:

3. Закрываем поток

После того, как Вы записали все необходимое, нужно не забыть закрыть поток. Это мы делали в каждом из приведенных примеров:

FileReader

Теперь, рассмотрим пошагово работу с FileReader.

1. Объявление

Сначала FileReader, как и FileWriter, нужно объявить . Не забудьте про библиотеку и » волшебную фразу «:

2. FileReader + Scanner

Мы объявили не только FileReader, но и Scanner. Почему?

В отличии от FileWriter, FileReader не используется один:

Не вдаваясь в подробности, запомните, что FileReader и Scanner идут вместе. Но не забывайте их «связать» — для этого напишите название вашего объекта FileReader вместо «System.in» при объявлении Scanner:

3. Методы

Тут уже больше методов. Рассмотрим методы .nextLine() и .hasNextLine().

  • .nextLine() — это метод, который считывает строку (до ENTER), и возвращает это значение
  • .hasNextLine() — метод, который возвращает boolean — true или false, показывая, есть ли следующая строка.

Источник

Оцените статью