በጃቫ ውስጥ ፋይሎችን እንዴት እንደሚነበብ

ጃቫ ፋይሎችን ለማንበብ በርካታ ዘዴዎችን ይሰጣል ፡፡ እያንዳንዳቸው እነዚህ ዘዴዎች በተለያዩ ሁኔታዎች ውስጥ የተለያዩ የፋይሎችን አይነቶችን ለማንበብ ተገቢ ናቸው ፡፡ አንዳንዶቹ ረዣዥም ፋይሎችን ለማንበብ የተሻሉ ናቸው ፣ ሌሎቹ ደግሞ አጠር ያሉን ለማንበብ ፣ ወዘተ.

በዚህ መማሪያ ውስጥ ፋይሎችን ለማንበብ የሚከተሉትን የጃቫ ትምህርቶችን እንጠቀማለን

  • BufferedReader
  • ፋይሎች
  • ስካነር

በትምህርቱ በሙሉ በ src ውስጥ የተከማቸ ፋይል እየተጠቀምን ነው ወደ ፋይሉ የሚወስደው መንገድ src/file.txt.


ከመቀጠልዎ በፊት በዚህ ፋይል ውስጥ በርካታ የጽሑፍ መስመሮችን ያከማቹ።

ማስታወሻ:እነዚህን አተገባበር በሚጠቀሙበት ጊዜ ከተሻለው የኮድ አሠራር ጋር ተጣብቀው ሲኖሩ ስህተቶቹን በትክክል መያዝ አለብዎት ፡፡

የጽሑፍ ፋይሎችን በጃቫ ውስጥ ከ BufferedReader ጋር በማንበብ

BufferedReader ክፍል የቁምፊ-ግቤት ዥረት ያነባል። የንባብ ሂደቱን የበለጠ ቀልጣፋ ለማድረግ ነባሪው 8 ኪባ መጠን ባለው ቋት ውስጥ ቁምፊዎችን ያስታጥቃል ፡፡ የፋይል መስመርን በመስመር ለማንበብ ከፈለጉ ፣ BufferedReader ን መጠቀም ጥሩ ምርጫ ነው።


BufferedReader ትልልቅ ፋይሎችን በማንበብ ውጤታማ ነው ፡፡



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() የፋይሉ መጨረሻ ላይ ሲደርስ ዘዴው ባዶውን ይመልሳል።

ማስታወሻ:ንባብ ሲጠናቀቅ ፋይሉን መዝጋትዎን አይርሱ ፡፡

በጃቫ ውስጥ የ UTF-8 ኢንኮድድ ፋይልን ከ BufferedReader ጋር በማንበብ

BufferedReader ን መጠቀም እንችላለን የዩቲኤፍ -8 ኮድ የተደረገ ፋይልን ለማንበብ ክፍል ፡፡

በዚህ ጊዜ አንድ InputStreamReader እናልፋለን አንድ BufferedReader ሲፈጥሩ ነገር ለምሳሌ ፡፡


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


አንድ ፋይልን ለማንበብ የጃቫ ፋይሎችን ክፍል በመጠቀም

ጃቫ Files በጃቫ NIO ውስጥ በጃቫ 7 ውስጥ የተጀመረው ክፍል በፋይሎች ላይ የሚሰሩ የማይንቀሳቀሱ ዘዴዎችን ሙሉ በሙሉ ያካተተ ነው ፡፡

በመጠቀም Files ክፍል ፣ የፋይሉን ሙሉ ይዘት በድርድር ውስጥ ማንበብ ይችላሉ። ይህ ትናንሽ ፋይሎችን ለማንበብ ጥሩ ምርጫ ያደርገዋል።

በሁለቱም በእነዚህ ሁኔታዎች ውስጥ የፋይሎችን ክፍል እንዴት እንደምንጠቀምባቸው እንመልከት ፡፡

ትናንሽ ፋይሎችን በጃቫ ውስጥ በፋይሎች ክፍል በማንበብ

readAllLines()Files ዘዴ ክፍል የፋይሉን አጠቃላይ ይዘት እንዲያነብ ይፈቅድለታል እናም እያንዳንዱን መስመር እንደ አንድ ረድፍ በአንድ ረድፍ ውስጥ ያከማቻል ፡፡


የ | _ _ + _ | መጠቀም ይችላሉ ከ Path ጀምሮ ወደ ፋይሉ የሚወስደውን መንገድ ለማግኘት ክፍል ክፍል Files ይቀበላል የፋይሉ ነገር

Path

መጠቀም ይችላሉ 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()

በጃቫ ውስጥ ትላልቅ ፋይሎችን በፋይሎች ክፍል በማንበብ

byte[] bytes = Files.readAllBytes(path); ጋር አንድ ትልቅ ፋይል ለማንበብ ከፈለጉ ክፍልን መጠቀም ይችላሉ Files newBufferedReader() ምሳሌን ለማግኘት ዘዴ አንድ BufferedReader በመጠቀም የፋይል መስመርን በመስመር ላይ ያንብቡ እና ያንብቡ ፡፡

BufferedReader

ፋይሎችን በ Files.lines () በማንበብ ()

ጃቫ 8 ሙሉውን ፋይል ወደ 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();
} }
ለማንበብ ለፋይሎች ክፍል አዲስ ዘዴ አስተዋወቀ የሕብረቁምፊዎች


Stream

በጃቫ ውስጥ የጽሑፍ ፋይሎችን ከቃan ጋር በማንበብ

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();
} }
ክፍል አንድ የተወሰነ ገደብ በመጠቀም የፋይሉን ይዘት ወደ ክፍሎች ይከፋፍላል እና በከፊል ያነባል። ይህ አካሄድ በድንበር ተከፋፍሎ ለተለየ ይዘት ለማንበብ በጣም ተስማሚ ነው ፡፡

ለምሳሌ | Scanner ክፍል በነጭ ቦታዎች የተከፋፈሉ የቁጥር ቁጥሮች ወይም በኮማ የተለዩትን የቃጫዎች ዝርዝር ለማንበብ ተስማሚ ነው።

ነባሪው የ Scanner ክፍል የነጭ ክልል ነው። ግን ወሰኑን ወደሌላ ገጸ-ባህሪ ወይም መደበኛ አገላለፅ ማቀናበር ይችላሉ ፡፡ ይዘትን ወደ ተለያዩ ዓይነቶች ለመቀየር እንደ Scanner, next(), nextInt() እና nextLine() ያሉ የተለያዩ ቀጣይ ዘዴዎችም አሉት ፡፡

nextByte()

ከላይ በተጠቀሰው ምሳሌ ውስጥ ወሰን ወደ የነጭ ክልል እናዘጋጃለን እና 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();
} }
ን እንጠቀማለን በነጩን ቦታ የተለዩትን የይዘቱን ቀጣይ ክፍል ለማንበብ ዘዴ።


አጠቃላይ ፋይልን ማንበብ

የ | _ _ + _ | መጠቀም ይችላሉ ሙሉውን ፋይል በአንድ ጊዜ ዑደት ሳያካሂዱ ለማንበብ ክፍል። ማለፍ አለብዎት next() ለዚህ እንደ ወሰን ፡፡

Scannerማስታወሻ:የስካነር ክፍሉ አልተመሳሰለም እና ስለሆነም በክር-ደህና አይደለም።

ማጠቃለያ

በዚህ ማጠናከሪያ ትምህርት ውስጥ እንዳዩት ጃቫ የጽሑፍ ፋይሎችን ለማንበብ በእጅዎ ካለው ተግባር ባህሪ አንጻር የሚመርጧቸውን ብዙ ዘዴዎችን ይሰጣል ፡፡ መጠቀም ይችላሉ “\Z” ትላልቅ ፋይሎችን በመስመር ለማንበብ ፡፡

ይዘቱን በተወሰነ ወዳጅ የሚለይ ፋይልን ለማንበብ ከፈለጉ scanner.useDelimiter('\Z'); System.out.println(scanner.next()); scanner.close(); ይጠቀሙ ክፍል

እንዲሁም ጃቫ NIO BufferedReader መጠቀም ይችላሉ ትናንሽ እና ትልልቅ ፋይሎችን ለማንበብ ክፍል ፡፡