- 5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл
- Различные способы чтения файла на Java
- Чтение двоичных файлов и текстовых файлов
- 1. BufferedReader Читает файл
- 2. FileInputStream – Считывание двоичных файлов в байты
- 3. Файлы – Чтение файла в список строк
- 4. Сканер – Считывает текстовый файл в качестве итератора
- 5. RandomAccessFile – Чтение файлов в режиме только для чтения
- Читайте ещё по теме:
- Программа java для чтения
- Запись файлов. Класс FileWriter
- Чтение файлов. Класс FileReader
- Бесплатные 10 лучших классных Читалки приложения для Java
- VVS EBook Reader S60
- BookReader and BookReaderDeployer
- Lectura Full
- Albite READER
- MoBaca
- YongReader for Adobe PDF Converted Text File — No File Size Limit
- Face Reader
- MobiBook
- TequilaCat 3.0.9
- Скачать TequilaCat 3.0.9 для других телефонов
5 Способов чтения файла в Java – BufferedReader, FileInputStream, Файлы, Сканер, Случайный файл
Как прочитать файл на Java? Мы можем использовать классы ввода-вывода Java для чтения текстовых и двоичных файлов, таких как изображения, pdf и т.д., Используя BufferedReader, FileInputStream.
Существует множество различных способов чтения файла на Java. В этом уроке мы рассмотрим 5 различных способов чтения файла на Java.
Различные способы чтения файла на Java
5 классов из API ввода-вывода Java для чтения файлов:
- Буферизатор
- Поток ввода файлов
- Файлы
- Сканер
- Случайный файл
Чтение двоичных файлов и текстовых файлов
- Класс FileInputStream считывает данные файла в поток байтов. Поэтому его следует использовать для двоичных файлов, таких как изображения, pdf, мультимедиа, видео и т.д.
- Текстовые файлы основаны на символах. Мы можем использовать классы Reader , а также потоковые классы для их чтения.
- Файлы и классы сканера можно использовать для чтения текстовых файлов, а не двоичных файлов.
Давайте рассмотрим примеры программ для чтения файла на Java.
1. BufferedReader Читает файл
Мы можем использовать BufferedReader для считывания содержимого текстового файла в массив символов .
BufferedReader эффективен для чтения файла, поскольку он буферизует входные данные из указанного файла. Без буферизации каждый вызов методов read() или readLine() будет считывать байты из файла, затем преобразовываться в символы и возвращаться, что будет очень неэффективно.
package com.journaldev.io.readfile; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ReadFileUsingBufferedReader < public static void main(String[] args) < BufferedReader reader; char[] buffer = new char[10]; try < reader = new BufferedReader(new FileReader( "/Users/pankaj/Downloads/myfile.txt")); while (reader.read(buffer) != -1) < System.out.print(new String(buffer)); buffer = new char[10]; >reader.close(); > catch (IOException e) < e.printStackTrace(); >> >
В приведенной выше программе я печатаю данные файла на консоль. Давайте рассмотрим другой класс утилит для выполнения операций чтения файлов.
- Прочитайте полный файл в виде строки
- Считывайте файл строка за строкой и возвращайте список строк
- Подсчитайте вхождение строки в данный файл.
package com.journaldev.java; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class ReadFileJavaExample < /** * Main function to invoke different functions to * 1. readCompleteFileAsString - Read complete file as String * 2. readFileToListOfLines - Read lines from file and return list of line String * 3. countStringInFile - Count occurrence of a String in the file * @param args */ public static void main(String[] args) < String filePath = "/Users/pankaj/Downloads/myfile.txt"; String str="Java"; String fileData = readCompleteFileAsString(filePath); System.out.println("Complete File Data:"+fileData); ListlinesData = readFileToListOfLines(filePath); if(linesData!=null)< for(int i=0; i=""> readFileToListOfLines(String filePath) < List linesData = new ArrayList (); BufferedReader reader; try < reader = new BufferedReader( new FileReader(filePath)); >catch (FileNotFoundException e) < System.out.println("File is not present in the classpath or given location."); return null; >String line; try < while ((line=reader.readLine()) != null) < linesData.add(line); >> catch (IOException e) < System.out.println("IOException in reading data from file."); return null; >try < reader.close(); >catch (IOException e) < System.out.println("IOException in closing the Buffered Reader."); return null; >return linesData; > /** * This function will read complete file and return it as String * @param filePath * @return */ private static String readCompleteFileAsString(String filePath) < StringBuilder fileData = new StringBuilder(); BufferedReader reader; try < reader = new BufferedReader( new FileReader(filePath)); >catch (FileNotFoundException e) < System.out.println("File is not present in the classpath or given location."); return null; >char[] buf = new char[1024]; int numRead=0; try < while((numRead=reader.read(buf)) != -1)< String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; >> catch (IOException e) < System.out.println("IOException in reading data from file."); return null; >try < reader.close(); >catch (IOException e) < System.out.println("IOException in closing the Buffered Reader."); return null; >return fileData.toString(); > >
2. FileInputStream – Считывание двоичных файлов в байты
Мы всегда должны использовать поток для чтения файлов, не основанных на символах, таких как изображения, видео и т.д.
package com.journaldev.io.readfile; import java.io.FileInputStream; import java.io.IOException; public class ReadFileUsingFileInputStream < public static void main(String[] args) < FileInputStream fis; byte[] buffer = new byte[10]; try < fis = new FileInputStream("/Users/pankaj/Downloads/myfile.txt"); while (fis.read(buffer) != -1) < System.out.print(new String(buffer)); buffer = new byte[10]; >fis.close(); > catch (IOException e) < e.printStackTrace(); >> >
Операция чтения FileInputStream используется с массивом байтов, в то время как операция чтения BufferedReader использует массив символов.
3. Файлы – Чтение файла в список строк
Файлы – это служебный класс, который был представлен в версии Java 1.7. Мы можем использовать его метод ReadAllLines() для чтения данных текстового файла в виде списка строк.
package com.journaldev.io.readfile; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class ReadFileUsingFiles < public static void main(String[] args) < try < ListallLines = Files.readAllLines(Paths.get("/Users/pankaj/Downloads/myfile.txt")); for (String line : allLines) < System.out.println(line); >> catch (IOException e) < e.printStackTrace(); >> >
4. Сканер – Считывает текстовый файл в качестве итератора
Мы можем использовать класс сканера для чтения текстового файла. Он работает как итератор
package com.journaldev.io.readfile; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class ReadFileUsingScanner < public static void main(String[] args) < try < Scanner scanner = new Scanner(new File("/Users/pankaj/Downloads/myfile.txt")); while (scanner.hasNextLine()) < System.out.println(scanner.nextLine()); >scanner.close(); > catch (FileNotFoundException e) < e.printStackTrace(); >> >
5. RandomAccessFile – Чтение файлов в режиме только для чтения
Класс RandomAccessFile позволяет нам читать файл в разных режимах. Это хороший вариант, если вы хотите убедиться, что в файле не выполняется случайная операция записи.
package com.journaldev.io.readfile; import java.io.IOException; import java.io.RandomAccessFile; public class ReadFileUsingRandomAccessFile < public static void main(String[] args) < try < RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r"); String str; while ((str = file.readLine()) != null) < System.out.println(str); >file.close(); > catch (IOException e) < e.printStackTrace(); >> >
Это все для чтения файла на Java с использованием различных классов из Java IO API.
Читайте ещё по теме:
Программа java для чтения
Хотя с помощью ранее рассмотренных классов можно записывать текст в файлы, однако они предназначены прежде всего дл работы с бинарными потоками данных, и их возможностей для полноценной работы с текстовыми файлами недостаточно. И для этой цели служат совсем другие классы, которые являются наследниками абстрактных классов Reader и Writer .
Запись файлов. Класс FileWriter
Класс FileWriter является производным от класса Writer. Он используется для записи текстовых файлов.
Чтобы создать объект FileWriter, можно использовать один из следующих конструкторов:
FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) FileWriter(String fileName) FileWriter(String fileName, boolean append)
Так, в конструктор передается либо путь к файлу в виде строки, либо объект File, который ссылается на конкретный текстовый файл. Параметр append указывает, должны ли данные дозаписываться в конец файла (если параметр равен true), либо файл должен перезаписываться.
Запишем в файл какой-нибудь текст:
import java.io.*; public class Program < public static void main(String[] args) < try(FileWriter writer = new FileWriter("notes3.txt", false)) < // запись всей строки String text = "Hello Gold!"; writer.write(text); // запись по символам writer.append('\n'); writer.append('E'); writer.flush(); >catch(IOException ex) < System.out.println(ex.getMessage()); >> >
В конструкторе использовался параметр append со значением false — то есть файл будет перезаписываться. Затем с помощью методов, определенных в базовом классе Writer производится запись данных.
Чтение файлов. Класс FileReader
Класс FileReader наследуется от абстрактного класса Reader и предоставляет функциональность для чтения текстовых файлов.
Для создания объекта FileReader мы можем использовать один из его конструкторов:
FileReader(String fileName) FileReader(File file) FileReader(FileDescriptor fd)
А используя методы, определенные в базом классе Reader, произвести чтение файла:
import java.io.*; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < // читаем посимвольно int c; while((c=reader.read())!=-1)< System.out.print((char)c); >> catch(IOException ex) < System.out.println(ex.getMessage()); >> >
Также мы можем считывать в промежуточный буфер из массива символов:
import java.io.*; import java.util.Arrays; public class Program < public static void main(String[] args) < try(FileReader reader = new FileReader("notes3.txt")) < char[] buf = new char[256]; int c; while((c = reader.read(buf))>0) < if(c < 256)< buf = Arrays.copyOf(buf, c); >System.out.print(buf); > > catch(IOException ex) < System.out.println(ex.getMessage()); >> >
В данном случае считываем последовательно символы из файла в массив из 256 символов, пока не дойдем до конца файла в этом случае метод read возвратит число -1.
Поскольку считанная порция файла может быть меньше 256 символов (например, в файле всего 73 символа), и если количество считанных данных меньше размера буфера (256), то выполняем копирование массива с помощью метода Arrays.copy. То есть фактически обрезаем массив buf, оставляя в нем только те символы, которые считаны из файла.
Бесплатные 10 лучших классных Читалки приложения для Java
Откройте TXT файлы с UTF-8 кодировкой на свой мобильный телефон. На весь экран пейзаж чтения. Список последних файлов. Резюме чтение из той же.
VVS EBook Reader S60
Программа для чтения электронных книг в формате TXT. Основные характеристики: — 6 размеры шрифта — 2 варианта дизайна — 5-ступенчатая автоматическая прокрутки — Переход в любое место в тексте — Откройте страницу, на которой вы остановились — поиск текста — . и многое.
BookReader and BookReaderDeployer
BookReader и BookReaderDeployer позволяет читать целые книги на вашем мобильном телефоне без развития.
Lectura Full
Мобильная версия. Развитие Билли Grados Licham. С помощью этого приложения вы можете прочитать все, только если он находится в тексте, и она имеет несколько страниц. Инструкции: — С помощью клавиш влево или вправо навигации для чтения экрана на экране. — Используйте вверх или вниз.
Albite READER
является открытым исходным кодом для чтения электронных книг для мобильных Java выпущен под лицензией Apache 2.0 и разработанная Svetlin Ankov. Работает с EPUB, TXT и (X) HTML-файлов. Реализованы функции & NBSP; & NBSP; & NBSP; * Сглаживаются растровый шрифт в четырех размерах с более чем 500 850 знаков, включая.
MoBaca
J2ME приложение, которое позволяет отображать текстовый файл, как книгу на мобильном телефоне. Сохранить текст книги файлы, которые вы получили от сайтов, как Project Гуттенберга, и читать текст в любом месте. Авто закладка на, автоматический переход на последнюю прочитанную.
YongReader for Adobe PDF Converted Text File — No File Size Limit
Версия 2.01 позволяет переключаться между 2-х файлов для чтения. Это закладки их автоматически при выходе из программы. Скачать с выше сайта и установить сейчас! Выгоды 1) предназначен для чтения текстового содержимого легко и быстро на мобильном телефоне. Только один ключ вниз.
Face Reader
FaceReader это миры самый сложный и подробный приложение Face Reading для Java мобильных телефонов. FaceReader приложение основано на тринадцать лет статистического исследования, которые использовали тысячи граней, и к увлекательной и откровенной открытия, 92% точно, что существует четкая.
MobiBook
MobiBook это книги для мобильных телефонов. Вы думаете, что это ерунда, что разрешение экрана мобильного телефона не хватает? Просто взгляните на скриншоты . Конечно нормальный & Quot; бумага & Quot; книги выглядит лучше. Но это не всегда с вами. И если вы должны ждать чего-то и & Quot; убить.
TequilaCat 3.0.9
TequilaCat — программа для чтения книг в формате fb2 и txt. Для txt-файлов поддерживаются различные кодировки.
Настройки вида, шрифта, подсветки и многое другое, отличная работа с закладками.
Версия TequilaCat 3.0.9 отлично работает как на сенсорных, так и на кнопочных телефонах.
Если вы установили программу на сенсорный телефон и не можете разобраться с управлением, зайдите в пункт Настройки клавиатуры и ознакомитесь, какая часть экрана за что отвечает.
Несмотря на скриншоты, программа на русском языке.
Подобные программы ReadManiac, Foliant.
Статья о том как избавится от иероглифов/кракозябов в книгах находится здесь.
Скачать TequilaCat 3.0.9 для других телефонов
Простая и относительно неплохая программка. НО: когда перехожу на другую книгу(а иногда и ту которую читаю), то выводится ошибка. Это я еще не знаю как устранить. Но после перезапуска проги(когда вы на «кроказябренной книге» или ошибке)все возвращается на свои места. Из плюсов хочу отметить возможность поиска нужного места по ключевым словам — закладка сбросилась, но ты помнишь последние слова, и вуаля снова на последнем месте, где был! И еще мне нравится возможность повернуть экран на свое усмотрение, даже кверх ногами!)А так же возможность чтения FB2-книг: у меня их на компе предостаточно, но читать на нем нету времени. Эх, вот бы еще моему аппарату экран побольше, а то со 128х128 часто щелкаю и скоро все пальцы сощелкаю!