В Java има множество начини за четене на текстов файл в зависимост от размера на вашите данни и случая на използване. The java.io и java.nio.file пакети осигурете няколко класа за ефективно четене на файлове. Нека обсъдим общите подходи един по един.
1. Използване на класа BufferedReader
BufferedReader клас чете текст от поток от знаци и буферира знаците за ефективно четене. Често се увива около a FileReader или InputStreamReader за подобряване на производителността.
Синтаксис
JavaBufferedReader в = нов BufferedReader(Четец в int размер);
import java.io.*; public class UsingBufferReader { public static void main(String[] args) throws Exception{ // Creating BufferedReader for Input BufferedReader bfri = new BufferedReader( new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = bfri.readLine(); BufferedReader bfro = new BufferedReader(new FileReader(path)); String st; while ((st = bfro.readLine()) != null) System.out.println(st); } }
Изход
Изход2. Клас FileReader за четене на текстов файл
The Клас FileReader се използва за четене на текстови файлове в Java. Той чете знаци от файл и е подходящ за четене на обикновен текст. Конструкторите на този клас приемат, че кодирането на знаци по подразбиране и размерът на байтовия буфер по подразбиране са подходящи.
Конструкторите, дефинирани в този клас, са както следва:
- FileReader (Файлов файл): Създава нов FileReader, даден на файла за четене
- FileReader(FileDescriptor fd): Създава нов FileReader, даден на FileDescriptor за четене
- FileReader (низ име на файл): Създава нов FileReader с името на файла, от който да се чете
import java.io.*; public class UsingFileReader { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); FileReader fr = new FileReader(path); int i; // Holds true till there is nothing to read while ((i = fr.read()) != -1) // Print all the content of a file System.out.print((char)i); } }
Изход
Изход3. Клас скенер за четене на текстов файл
Клас скенер предоставя лесен начин за четене на текстови файлове и анализиране на примитивни типове или низове с помощта на регулярни изрази . Той разделя входа на токени с помощта на разделител (по подразбиране интервал).
Пример 1: С помощта на примки
Javaimport java.io.*; import java.util.Scanner; public class UsingScannerClass { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); // pass the path to the file as a parameter File file = new File(path); Scanner sc = new Scanner(file); while (sc.hasNextLine()) System.out.println(sc.nextLine()); } }
Изход
то е
ИзходПример 2: Без използване на примки
Javaimport java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); File file = new File(path); Scanner sc = new Scanner(file); // we just need to use \Z as delimiter sc.useDelimiter('\Z'); System.out.println(sc.next()); } }
Изход
Изход4. Четене на целия файл в списък
Можем да прочетем цял текстов файл в списък с помощта на Files.readAllLines() метод от пакет java.nio.file . Всеки ред във файла става един елемент в списъка.
Синтаксис
public static List readAllLines(Path pathCharset cs) хвърля IOException
Този метод разпознава следното като терминатори на редове:
- u000Du000A -> Връщане на каретка + Предаване на ред
- u000A -> Подаване на ред
- u000D -> Връщане на каретка
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList { public static List<String> readFileInList(String fileName) { // Created List of String List<String> lines = Collections.emptyList(); try { lines = Files.readAllLines( Paths.get(fileName) StandardCharsets.UTF_8); } catch(IOException e) { e.printStackTrace(); } return lines; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); List l = readFileInList(path); // Iterator iterating over List Iterator<String> itr = l.iterator(); while (itr.hasNext()) System.out.println(itr.next()); } }
Изход
Изход5. Прочетете текстов файл като String
Можем да прочетем цял текстов файл като един низ в Java. Това е полезно, когато искате да обработите съдържанието на файла като цяло, а не ред по ред.
Синтаксис:
валидни идентификатори в java
Низови данни = нов низ (Files.readAllBytes(Paths.get(fileName)));
Пример:
Javapackage io; import java.nio.file.*; public class ReadTextAsString { public static String readFileAsString(String fileName) throws Exception { String data = ''; data = new String( Files.readAllBytes(Paths.get(fileName))); return data; } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print('Enter the Path : '); // Reading File name String path = br.readLine(); String data = readFileAsString(path); System.out.println(data); } }
Изход
Изход Създаване на тест