logo

Eri tapoja lukea tekstitiedostoa Javassa

Javassa on useita tapoja lukea tekstitiedosto tietokoon ja käyttötapauksen mukaan. The java.io ja java.nio.file -paketit tarjota useita luokkia käsittelemään tiedostojen lukemista tehokkaasti. Keskustellaan yleisistä lähestymistavoista yksitellen.

1. BufferedReader-luokan käyttäminen

Puskuroitu Reader luokka lukee tekstiä merkkivirrasta ja puskuroi merkit tehokkaaseen lukemiseen. Se on usein kääritty ympärille a Tiedostonlukija tai InputStreamReader suorituskyvyn parantamiseksi.

Syntaksi

BufferedReader in = new BufferedReader(Reader int size);



Java
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);  } } 


Lähtö

Käyttämällä BufferReaderia' title=Lähtö

2. FileReader-luokka tekstitiedoston lukemiseen

The FileReader-luokka käytetään tekstitiedostojen lukemiseen Javassa. Se lukee merkkejä tiedostosta ja sopii pelkän tekstin lukemiseen. Tämän luokan rakentajat olettavat, että oletusmerkkikoodaus ja oletustavupuskurin koko ovat sopivia. 

Tässä luokassa määritellyt konstruktorit ovat seuraavat:

  • FileReader (tiedostotiedosto): Luo uuden FileReaderin, jolle annetaan tiedosto, josta lukea
  • FileReader(FileDescriptor fd): Luo uuden FileReaderin, jolla on luettava FileDescriptor
  • Tiedostonlukija(merkkijono tiedostonimi): Luo uuden FileReaderin, jolle annetaan luettavan tiedoston nimi
Java
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);  } } 


Lähtö

Käyttämällä FileReaderia' loading='lazy' title=Lähtö

3. Skanneriluokka tekstitiedoston lukemiseen

Skanneriluokka tarjoaa yksinkertaisen tavan lukea tekstitiedostoja ja jäsentää primitiivisiä tyyppejä tai merkkijonoja käyttämällä säännöllisiä lausekkeita . Se jakaa syötteen tunnuksiksi erottimen (oletuksena välilyönnin) avulla.

Esimerkki 1: Silmukoiden avulla

Java
import 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());  } } 


Lähtö

mikä on tietokone
Käyttämällä BufferReaderia' loading='lazy' title=Lähtö

Esimerkki 2: Ilman silmukoita

Java
import 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());  } } 


Lähtö

ReadingEntireFileWithoutLoop' loading='lazy' title=Lähtö

4. Koko tiedoston lukeminen luettelona

Voimme lukea koko tekstitiedoston luetteloksi käyttämällä Files.readAllLines() menetelmästä java.nio.file-paketti . Jokaisesta tiedoston rivistä tulee yksi luettelon elementti.

Syntaksi

public static List readAllLines(Path pathCharset cs)heittää IOExceptionin

Tämä menetelmä tunnistaa seuraavat rivinpäätteet: 

  • u000Du000A -> Vaunun paluu + rivinvaihto
  • u000A -> rivinsyöttö
  • u000D -> Vaunun paluu
Java
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());  } } 


Lähtö

ReadFileIntoList' loading='lazy' title=Lähtö

5. Lue tekstitiedosto merkkijonona

Voimme lukea koko tekstitiedoston yhtenä merkkijonona Javassa. Tämä on hyödyllistä, kun haluat käsitellä tiedoston sisällön kokonaisuutena eikä rivi riviltä.

Syntaksi:

miten merkkijono muunnetaan merkiksi

Merkkijonotiedot = new String(Files.readAllBytes(Paths.get(tiedostonimi)));

Esimerkki:

Java
package 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);  } } 

Lähtö

ReadTextAsString' loading='lazy' title=Lähtö

Luo tietokilpailu