ישנם דרכים רבות לקרוא קובץ טקסט ב-Java. בואו נסתכל על שיטות שונות לקריאת קובץ טקסט ב-Java.
קריאת קובץ טקסט ב-Java
ישנם דרכים רבות לקרוא קובץ טקסט ב-Java. קובץ טקסט מורכב מתווי תווים, ולכן אנו יכולים להשתמש במחלקות Reader. ישנם גם מחלקות יעילות לקריאת קובץ טקסט ב-Java.
- קריאת קובץ טקסט ב-Java באמצעות מחלקת קבצים (Files)
- קריאת קובץ טקסט ב-Java באמצעות
FileReader
- קריאת קובץ טקסט ב-Java באמצעות BufferedReader
- שימוש ב-מחלקת Scanner לקריאת קובץ טקסט ב-Java
כעת בואו נסתכל על דוגמאות המראות כיצד לקרוא קובץ טקסט ב-Java באמצעות כל אחת מהמחלקות הללו.
קריאת קובץ טקסט ב-Java באמצעות java.nio.file.Files
ניתן להשתמש במחלקת Files כדי לקרוא את כל תוכן הקובץ למערך של בתים. מחלקת Files גם מכילה שיטה לקריאת כל השורות לרשימת מחרוזות. מחלקת Files הוכנסה ב-Java 7 וזה נהדר אם ברצונך לטעון את כל תוכן הקובץ. עליך להשתמש בשיטה זו רק כאשר אתה עובד עם קבצים קטנים ואתה זקוק לכל תוכן הקובץ בזיכרון.
String fileName = "/Users/pankaj/source.txt";
Path path = Paths.get(fileName);
byte[] bytes = Files.readAllBytes(path);
List<String> allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
קריאת קובץ טקסט ב-Java באמצעות java.io.FileReader
ניתן להשתמש ב-FileReader כדי לקבל את BufferedReader ולקרוא קבצים שורה אחרי שורה. FileReader לא תומך בקידוד ועובד עם קידוד ברירת המחדל של המערכת, לכן זה אינו אופן יעיל מאוד לקרוא קובץ טקסט ב-Java.
String fileName = "/Users/pankaj/source.txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
while((line = br.readLine()) != null){
//תכנס לשורה
System.out.println(line);
}
קריאת קובץ טקסט ב-Java באמצעות java.io.BufferedReader
קוראBufferedReader הוא טוב אם ברצונך לקרוא קובץ שורה אחרי שורה ולעבד אותן. זה טוב לעיבוד של קבצים גדולים וזה תומך גם בקידוד. BufferedReader מסונכרן, כך שפעולות קריאה על BufferedReader יכולות להתבצע בבטחה ממספר תהליכים. גודל ברירת המחדל של המטמון של BufferedReader הוא 8 קילובייט. `
String fileName = "/Users/pankaj/source.txt";
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, cs);
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine()) != null){
`//עיבוד השורה `
System.out.println(line);
}
br.close();
שימוש בסורק לקרוא קובץ טקסט ב-Java
אם ברצונך לקרוא קובץ שורה אחר שורה או בהתבסס על מספר ביטוי רגולרי של Java, המחלקה לשימוש היא Scanner. הסורק פורק את הקלט שלו לטוקנים באמצעות דפדפן שמשמש כתבוע. הטוקנים התוצאתיים יכולים להימר לערכים שונים של סוגים שונים באמצעות שיטות next שונות. מחלקת הסורק אינה מסונכרנת ולכן לא בטוחה בנוגע לתהליכי תרד. `
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
System.out.println("Read text file using Scanner");
`//קריאה שורה אחר שורה `
while(scanner.hasNextLine()){
`//עיבוד כל שורה `
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
דוגמא לקריאת קובץ ב-Java
זהו דוגמא למחלקה המראה כיצד לקרוא קובץ טקסט ב-Java. שיטות הדוגמא משתמשות בסורק, קבצים, BufferedReader עם תמיכה בקידוד ובקורא FileReader.
package com.journaldev.files;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Scanner;
public class JavaReadFile {
public static void main(String[] args) throws IOException {
String fileName = "/Users/pankaj/source.txt";
//שימוש בקלאס Files ב-Java 7 לעיבוד קבצים קטנים, לקבלת נתוני קובץ מלאים
readUsingFiles(fileName);
//שימוש בקלאס Scanner לקבצים גדולים, לקריאה שורה אחרי שורה
readUsingScanner(fileName);
//קריאה באמצעות BufferedReader, לקרוא שורה אחרי שורה
readUsingBufferedReader(fileName);
readUsingBufferedReaderJava7(fileName, StandardCharsets.UTF_8);
readUsingBufferedReader(fileName, StandardCharsets.UTF_8);
//קריאה באמצעות FileReader, ללא תמיכה בקידוד, לא יעיל
readUsingFileReader(fileName);
}
private static void readUsingFileReader(String fileName) throws IOException {
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
System.out.println("Reading text file using FileReader");
while((line = br.readLine()) != null){
//עיבוד השורה
System.out.println(line);
}
br.close();
fr.close();
}
private static void readUsingBufferedReader(String fileName, Charset cs) throws IOException {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, cs);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.println("Read text file using InputStreamReader");
while((line = br.readLine()) != null){
//עיבוד השורה
System.out.println(line);
}
br.close();
}
private static void readUsingBufferedReaderJava7(String fileName, Charset cs) throws IOException {
Path path = Paths.get(fileName);
BufferedReader br = Files.newBufferedReader(path, cs);
String line;
System.out.println("Read text file using BufferedReader Java 7 improvement");
while((line = br.readLine()) != null){
//עיבוד השורה
System.out.println(line);
}
br.close();
}
private static void readUsingBufferedReader(String fileName) throws IOException {
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
System.out.println("Read text file using BufferedReader");
while((line = br.readLine()) != null){
//עיבוד השורה
System.out.println(line);
}
//סגירת משאבים
br.close();
fr.close();
}
private static void readUsingScanner(String fileName) throws IOException {
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
System.out.println("Read text file using Scanner");
//קריאה שורה אחר שורה
while(scanner.hasNextLine()){
//עיבוד כל שורה
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
}
private static void readUsingFiles(String fileName) throws IOException {
Path path = Paths.get(fileName);
//קריאה של קובץ למערך של Bytes
byte[] bytes = Files.readAllBytes(path);
System.out.println("Read text file using Files class");
//קריאה של קובץ לרשימת מחרוזות
@SuppressWarnings("unused")
List allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
System.out.println(new String(bytes));
}
}
בחירת השימוש ב-Scanner או BufferedReader או Files לקריאת קובץ תלויה בדרישות הפרוייקט שלך. לדוגמה, אם אתה פשוט רושם לקובץ, תוכל להשתמש ב-Files ו-BufferedReader. אם אתה מנסה לפענח את הקובץ על פי גורם מפריד, כדאי להשתמש בקלאס Scanner. לפני שאני מסיים את ההדרכה, רוצה להזכיר על RandomAccessFile
. ניתן להשתמש בזה לקריאת קובץ טקסט ב-Java.
RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r");
String str;
while ((str = file.readLine()) != null) {
System.out.println(str);
}
file.close();
זהו כל הדברים עבור דוגמאות קובץ טקסט ב-Java.
Source:
https://www.digitalocean.com/community/tutorials/java-read-text-file