Автор оригинала: Pankaj Kumar.
Программа чтения файлов Java
- Класс Java FileReader является частью java.io посылка.
- Файловый редактор является подклассом класса
InputStreamReader. - Программа чтения файлов Java рекомендуется для чтения текстовых данных из файла по сравнению с
FileInputStream. - Программа чтения файлов предназначена для чтения потоков символов. Так что это хороший выбор для чтения строковых данных на основе.
- Конструкторы этого класса предполагают, что кодировка символов по умолчанию и размер байтового буфера по умолчанию являются подходящими.
- Считыватели файлов обычно оборачиваются объектами более высокого уровня , такими как
BufferedReader, которые повышают производительность и предоставляют более удобные способы работы с данными.
Иерархия классов читателя файлов
Конструкторы для чтения файлов
Давайте быстро взглянем на конструкторы читателя файлов .
Программа чтения файлов(файловый файл): Создает новый объект чтения файлов, используя указанный объект файла для чтения. Это вызовет исключениеFileNotFoundException, если файл не существует, является каталогом, а не обычным файлом, или по какой-либо другой причине не может быть открыт для чтения.FileReader(FileDescriptor fd): Создает новый объект FileReader, используя указанныйФайловый дескрипторобъект для чтения.Средство чтения файлов(строковое имя файла): Создает новый объект средства чтения файлов, используя указанное имя файла для чтения. Он вызовет исключениеFileNotFoundException, если именованный файл не существует, является каталогом, а не обычным файлом, или по какой-либо другой причине не может быть открыт для чтения.
Пример программы чтения файлов Java
Давайте рассмотрим приведенные ниже методы и примеры программ класса FileReader.
читать()
Этот метод считывает один символ. Этот метод будет блокироваться до тех пор, пока не будет доступен символ, не произойдет ошибка ввода-вывода или не будет достигнут конец потока. Он возвращает символ, считываемый как целое число в диапазоне от 0 до 65535 (0x00-0xffff), или -1, если достигнут конец потока.
Давайте рассмотрим приведенный ниже пример программы.
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
/**
* Java Read file FileReader
*
* @author pankaj
*
*/
public class FileReaderReadExample {
public static void main(String[] args) {
File file = null;
FileReader reader = null;
try {
file = new File("D:/data/file.txt");
reader = new FileReader(file);
int i;
while ((i=reader.read())!= -1) {
System.out.print((char)i);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
Выходные данные вышеупомянутой программы приведены ниже:
Hello World. This is a FileReader Example.
FileReader реализует Автоклавируемый | интерфейс , следовательно, мы можем попробовать использовать ресурс при использовании класса FileReader. Давайте рассмотрим приведенный ниже пример программы.
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
/**
* Java Read file FileReader using try with resource
*
* @author pankaj
*
*/
public class FileReaderReadUsingTryWithResource {
public static void main(String[] args) {
File file = new File("D:/data/file.txt");
try (FileReader reader = new FileReader(file);){
int i;
while ((i=reader.read())!= -1) {
System.out.print((char)i);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Выходные данные вышеупомянутой программы приведены ниже:
Hello World. This is a FileReader Example.
читать(char[] cbuf)
Этот метод считывает символы в массив. Этот метод будет блокироваться до тех пор, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока. Он возвращает количество прочитанных символов или -1, если достигнут конец потока. Давайте рассмотрим приведенный ниже пример программы.
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
/**
* Java Read file FileReader using read(char[] cbuf) method
*
* @author pankaj
*
*/
public class ReadFileUsingFileReader {
public static void main(String[] args) {
File file = new File("D:/data/file.txt");
try (FileReader reader = new FileReader(file);){
char[] cs = new char[100];
reader.read(cs);
for (char c : cs) {
System.out.print(c);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Выходные данные вышеупомянутой программы приведены ниже:
Hello World. This is a FileReader Example.
читать(char[] cbuf, int off, int len)
Этот метод считывает символы в часть массива. Этот метод будет блокироваться до тех пор, пока не будет доступен какой-либо ввод, не произойдет ошибка ввода-вывода или не будет достигнут конец потока. Он возвращает количество прочитанных символов или -1, если достигнут конец потока.
Параметры :
- cbuf: буфер назначения
- выкл.: Смещение, с которого начинается хранение символов
- len: Максимальное количество символов для чтения
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
/**
* Java Read file FileReader using read(char[] cbuf, int off, int len) method
*
* @author pankaj
*
*/
public class ReadFileUsingFileReaderExample {
public static void main(String[] args) {
File file = new File("D:/data/file.txt");
try (FileReader reader = new FileReader(file);){
char[] cs = new char[100];
reader.read(cs, 0, 11);
for (char c : cs) {
System.out.print(c);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//Output: Hello World
чтение(цель CharBuffer)
Этот метод считывает символы в указанный буфер символов. Буфер используется как хранилище символов как есть: единственные внесенные изменения являются результатами операции put. Перелистывание или перемотка буфера не производится. Он возвращает количество символов, добавленных в буфер, или -1, если этот источник символов находится в его конце.
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
import java.nio.CharBuffer;
/**
* Java Read file FileReader using CharBuffer
*
* @author pankaj
*
*/
public class ReadFileUsingFileReaderCharBuffer {
public static void main(String[] args) {
File file = new File("D:/data/file.txt");
try (FileReader reader = new FileReader(file);){
//create char buffer with the capacity of 50
CharBuffer cs = CharBuffer.allocate(50);
//read characters into char buffer
reader.read(cs);
//flip char buffer
cs.flip();
System.out.println(cs.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
пропустить(длинный n)
Этот метод пропускает количество символов и возвращает количество пропущенных символов.
package com.journaldev.examples;
import java.io.File;
import java.io.FileReader;
/**
* Java Read file FileReader using skip method
*
* @author pankaj
*
*/
public class FileReaderSkipExample {
public static void main(String[] args) {
File file = null;
FileReader reader = null;
try {
file = new File("D:/data/file.txt");
reader = new FileReader(file);
//skip first 6 characters
reader.skip(6);
int i;
while ((i=reader.read())!= -1) {
System.out.print((char)i);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
Выход:
World. This is a FileReader Example.
Также проверьте текстовый файл чтения java для получения дополнительной информации о том, как читать текстовый файл на java.
Файловый редактор Java против потока ввода файлов
- FileReader используется для чтения потоков символов, в то время как FileInputStream используется для чтения потоков байтов, таких как необработанные данные изображения.
- Программа чтения файлов хороша для чтения текстовых файлов, таких как файл исходного кода java, в то время как FileInputStream хорош для чтения двоичных файлов, таких как файлы .class.
Это все для программы чтения файлов Java, я надеюсь, что здесь не было пропущено ничего важного.
Ссылка: API Doc