Java-da faylları necə oxumaq olar

Java faylları oxumaq üçün bir neçə metod təqdim edir. Bu metodların hər biri fərqli vəziyyətlərdə müxtəlif növ faylları oxumaq üçün uyğundur. Bəziləri daha uzun faylları oxumaq üçün daha yaxşıdır, bəziləri daha qısa faylları oxumaq üçün daha yaxşıdır və s.

Bu təlimatda, faylları oxumaq üçün aşağıdakı Java dərslərindən istifadə edəcəyik

  • BufferedReader
  • Fayllar
  • Skaner

Dərs boyunca, src -də saxlanılan bir fayldan istifadə edirik faylın yolunun olduğu qovluq src/file.txt.


Davam etmədən əvvəl bir neçə sətir mətni bu faylda saxlayın.

Qeyd:Ən yaxşı kodlaşdırma təcrübələrinə sadiq qalmaq üçün bu tətbiqetmələrdən istifadə edərkən səhvləri düzgün idarə etməlisiniz.

BufferedReader ilə Java-da mətn sənədlərini oxumaq

BufferedReader sinif bir xarakter giriş axını oxuyur. Oxu prosesini daha səmərəli etmək üçün 8 KB-lıq ölçülü bir tamponda simvolları buferləşdirir. Bir fayl sətir-sətir oxumaq istəyirsinizsə, BufferedReader istifadə etmək yaxşı seçimdir.


BufferedReader böyük faylları oxumaqda səmərəlidir.

import java.io.*; public class FileReaderWithBufferedReader {
public static void main(String[] args) throws IOException{We
String file = 'src/file.txt';
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

String curLine;
while ((curLine = bufferedReader.readLine()) != null){

//process the line as required

System.out.println(curLine);
}
bufferedReader.close();
} }

readline() metod faylın sonuna çatdıqda sıfır qaytarır.

Qeyd:Oxu bitdikdən sonra faylı bağlamağı unutmayın.

BufferedReader ilə Java-da UTF-8 Kodlu Faylı oxumaq

BufferedReader İstifadə edə bilərik UTF-8 kodlu bir sənəd oxumaq üçün sinif.

Bu dəfə bir InputStreamReader keçirik BufferedReader yaratarkən obyekt misal.


import java.io.*; public class EncodedFileReaderWithBufferedReader {
public static void main(String[] args) throws IOException {
String file = 'src/fileUtf8.txt';
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), 'UTF-8'));

String curLine;
while ((curLine = bufferedReader.readLine()) != null){

//process the line as you require

System.out.println(curLine);
}
} }


Bir faylı oxumaq üçün Java Files Class istifadə

Java Files Java NIO-da Java 7-də tətbiq olunan sinif, tamamilə fayllarda işləyən statik metodlardan ibarətdir.

Files İstifadə sinif, bir faylın tam məzmununu bir sıra halında oxuya bilərsiniz. Bu, daha kiçik faylları oxumaq üçün yaxşı bir seçimdir.

Gəlin hər iki ssenaridə Files sinifindən necə istifadə edə biləcəyimizi görək.

Java-da Kiçik Dosyaları Files Class ilə oxumaq

readAllLines() Files üsulu sinif, faylın bütün məzmununun oxunmasına imkan verir və hər sətri bir sıra olaraq strings kimi saxlayır.


Path İstifadə edə bilərsiniz Files -dən bəri faylın yolunu almaq üçün sinif sinif Path qəbul edir sənədin obyekti.

import java.io.IOException; import java.nio.file.*; import java.util.*; public class SmallFileReaderWithFiles {
public static void main(String[] args) throws IOException {
String file = 'src/file.txt';
Path path = Paths.get(file);
List lines = Files.readAllLines(path);
} }

readAllBytes() İstifadə edə bilərsiniz faylda saxlanılan məlumatları simli sıra yerinə bir bayt massivinə qaytarmaq.

byte[] bytes = Files.readAllBytes(path);

Java-da Böyük Dosyaları Files Class ilə oxumaq

Files İlə böyük bir sənəd oxumaq istəyirsinizsə sinif, newBufferedReader() istifadə edə bilərsiniz BufferedReader nümunəsini əldə etmək üçün metod sinif və bir BufferedReader istifadə edərək satır satır oxuyun.

import java.io.*; import java.nio.file.*; public class LargeFileReaderWithFiles {
public static void main(String[] args) throws IOException {
String file = 'src/file.txt';
Path path = Paths.get(file);
BufferedReader bufferedReader = Files.newBufferedReader(path);

String curLine;
while ((curLine = bufferedReader.readLine()) != null){

System.out.println(curLine);
}
bufferedReader.close();
} }


Files.lines ilə faylları oxumaq ()

Java 8, Files sinfinə yeni bir üsul təqdim etdi ki, bütün dosyayı bir Stream simli.


import java.io.IOException; import java.nio.file.*; import java.util.stream.Stream; public class FileReaderWithFilesLines {
public static void main(String[] args) throws IOException {
String file = 'src/file.txt';
Path path = Paths.get(file);
Stream lines = Files.lines(path);

lines.forEach(s -> System.out.println(s));
lines.close();
} }


Tarayıcı ilə Java-da mətn sənədlərini oxumaq

Scanner sinif verilmiş ayırıcıdan istifadə edərək bir sənədin məzmununu hissələrə ayırır və hissə-hissə oxuyur. Bu yanaşma, ayırıcı ilə ayrılmış məzmunu oxumaq üçün ən uyğun gəlir.

Məsələn, Scanner sinif, boşluqlarla ayrılmış tam ədədlərin siyahısını və ya vergüllə ayrılmış simlərin siyahısını oxumaq üçün idealdır.

Varsayılan ayırıcı Scanner sinif boşluqdur. Ancaq ayırıcıyı başqa bir xarakterə və ya normal bir ifadəyə qura bilərsiniz. Məzmunu müxtəlif növlərə çevirmək üçün next(), nextInt(), nextLine(), və nextByte() kimi müxtəlif növbəti metodlara da malikdir.

import java.io.IOException; import java.util.Scanner; import java.io.File; public class FileReaderWithScanner {
public static void main(String[] args) throws IOException{
String file = 'src/file.txt';
Scanner scanner = new Scanner(new File(file));
scanner.useDelimiter(' ');

while(scanner.hasNext()){

String next = scanner.next();

System.out.println(next);
}
scanner.close();
} }

Yuxarıdakı nümunədə ayırıcıyı boşluq olaraq təyin etdik və next() istifadə etdik boşluqla ayrılmış məzmunun növbəti hissəsini oxumaq üçün metod.


Bütün sənədləri oxumaq

Scanner İstifadə edə bilərsiniz sinfi bir dövrü işləmədən bütün faylı birdən oxumaq. “\Z” Keçməlisən bunun üçün ayırıcı kimi.

scanner.useDelimiter('\Z'); System.out.println(scanner.next()); scanner.close(); Qeyd:Scanner sinfi sinxronlaşdırılmır və bu səbəbdən də təhlükəsizdir.

Nəticə

Bu təlimatda gördüyünüz kimi, Java mətn sənədlərini oxumaq üçün əlinizdəki tapşırığın xüsusiyyətinə görə seçim edə biləcəyiniz bir çox metod təqdim edir. BufferedReader İstifadə edə bilərsiniz böyük faylları sətir-sətir oxumaq.

Məzmunu ayırıcı ilə ayrılmış bir faylı oxumaq istəyirsinizsə, Scanner istifadə edin sinif.

Ayrıca Java NIO Files istifadə edə bilərsiniz həm kiçik, həm də böyük sənədləri oxumaq üçün sinif.