logo

Java'da bir metin dosyasını okumanın farklı yolları

Java'da, veri boyutunuza ve kullanım durumunuza bağlı olarak bir metin dosyasını okumanın birden fazla yolu vardır. java.io Ve java.nio.dosya paketleri Dosya okumayı verimli bir şekilde gerçekleştirmek için çeşitli sınıflar sağlar. Ortak yaklaşımları tek tek tartışalım.

1. BufferedReader Sınıfını Kullanmak

Tamponlu Okuyucu sınıf, metni bir karakter akışından okur ve verimli okuma için karakterleri arabelleğe alır. Çoğu zaman bir şeyin etrafına sarılır. Dosya Okuyucu veya Giriş Akışı Okuyucusu performansı artırmak için.

Sözdizimi

BufferedReader in = new BufferedReader(int boyutunda okuyucu);



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


Çıkış

BufferReader'ı Kullanma' title=Çıkış

2. Metin dosyasını okumak için FileReader sınıfı

FileReader sınıfı Java'da metin dosyalarını okumak için kullanılır. Bir dosyadaki karakterleri okur ve düz metin okumak için uygundur. Bu sınıfın yapıcıları, varsayılan karakter kodlamasının ve varsayılan bayt arabellek boyutunun uygun olduğunu varsayar. 

Bu sınıfta tanımlanan yapıcılar aşağıdaki gibidir:

  • Dosya Okuyucusu(Dosya dosyası): Okunacak Dosyaya göre yeni bir FileReader oluşturur
  • FileReader(FileDescriptor fd): Okunacak FileDescriptor'a göre yeni bir FileReader oluşturur
  • FileReader(Dize dosyaAdı): Okunacak dosyanın adı verilen yeni bir FileReader oluşturur
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);  } } 


Çıkış

FileReader'ı Kullanma' loading='lazy' title=Çıkış

3. Metin dosyasını okumak için tarayıcı sınıfı

Tarayıcı sınıfı kullanarak metin dosyalarını okumak ve ilkel türleri veya dizeleri ayrıştırmak için basit bir yol sağlar. düzenli ifadeler . Bir sınırlayıcı (varsayılan olarak boşluk) kullanarak girdiyi belirteçlere böler.

Örnek 1: Döngüler kullanarak

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


Çıkış

java ters dize
BufferReader'ı Kullanma' loading='lazy' title=Çıkış

Örnek 2: Döngüler kullanılmadan

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


Çıkış

Döngü Olmadan Tüm Dosyayı Okuma' loading='lazy' title=Çıkış

4. Bir Listedeki dosyanın tamamını okuma

kullanarak bir metin dosyasının tamamını bir Listeye okuyabiliriz. Files.readAllLines() gelen yöntem java.nio.dosya paketi . Dosyadaki her satır listedeki bir öğe haline gelir.

Sözdizimi

public static List readAllLines(Path pathCharset cs) IOException'ı atar

Bu yöntem aşağıdakileri hat sonlandırıcı olarak tanır: 

  • u000Du000A -> Satırbaşı + Satır Besleme
  • u000A -> Satır Besleme
  • u000D -> Satırbaşı
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());  } } 


Çıkış

ReadFileIntoList' loading='lazy' title=Çıkış

5. Bir metin dosyasını String olarak okuma

Java'da bir metin dosyasının tamamını tek bir String olarak okuyabiliriz. Bu, dosya içeriğini satır satır işlemek yerine bir bütün olarak işlemek istediğinizde kullanışlıdır.

Sözdizimi:

tarih dizgeye dönüştürülür

Dize verileri = new String(Files.readAllBytes(Paths.get(fileName)));

Örnek:

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

Çıkış

ReadTextAsString' loading='lazy' title=Çıkış

Test Oluştur