更新時間:2022-04-06 11:33:35 來源:動力節點 瀏覽1535次
有多種寫入和讀取文本文件的方法。在處理許多應用程序時,這是必需的。有幾種方法可以在 Java 中讀取純文本文件,動力節點小編給大家舉例,如您可以使用FileReader、BufferedReader或Scanner來讀取文本文件。每個實用程序都提供了一些特殊的功能,例如 BufferedReader 提供數據緩沖以便快速讀取,而 Scanner 提供解析能力。
方法:
1.使用 BufferedReader 類
2.使用FileReader類
3.使用Scanner類
4.讀取列表中的整個文件
5.以字符串形式讀取文本文件
讓我們更深入地討論上述每種方法,最重要的是通過一個干凈的 Java 程序來實現它們。
此方法從字符輸入流中讀取文本。它確實緩沖以有效讀取字符、數組和行。可以指定緩沖區大小,也可以使用默認大小。對于大多數用途,默認值足夠大。通常,由 Reader 發出的每個讀取請求都會導致對底層字符或字節流發出相應的讀取請求。因此,建議將 BufferedReader 包裹在 read() 操作可能成本高昂的任何 Reader 周圍,例如 FileReaders 和 InputStreamReaders,如下所示:
BufferedReader in = new BufferedReader(Reader in, int size);
例子:
// Java Program to illustrate Reading from FileReader
// using BufferedReader Class
// Importing input output classes
import java.io.*;
// Main class
public class GFG {
// main driver method
public static void main(String[] args) throws Exception
{
// File path is passed as parameter
File file = new File(
"C:\\Users\\pankaj\\Desktop\\test.txt");
// Note: Double backquote is to avoid compiler
// interpret words
// like \test as \t (ie. as a escape sequence)
// Creating an object of BufferedReader class
BufferedReader br
= new BufferedReader(new FileReader(file));
// Declaring a string variable
String st;
// Condition holds true till
// there is character in a string
while ((st = br.readLine()) != null)
// Print the string
System.out.println(st);
}
}
讀取字符文件的便利類。此類的構造函數假定默認字符編碼和默認字節緩沖區大小是適當的。
該類中定義的構造函數如下:
FileReader(File file):給定要讀取的文件,創建一個新的 FileReader
FileReader(FileDescriptor fd):給定要讀取的 FileDescriptor,創建一個新的 FileReader
FileReader(String fileName):給定要讀取的文件名,創建一個新的 FileReader
例子:
// Java Program to Illustrate reading from
// FileReader using FileReader class
// Importing input output classes
import java.io.*;
// Main class
// ReadingFromFile
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Passing the path to the file as a parameter
FileReader fr = new FileReader(
"C:\\Users\\pankaj\\Desktop\\test.txt");
// Declaring loop variable
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);
}
}
一個簡單的文本掃描器,可以使用正則表達式解析原始數據類型和字符串。Scanner 使用分隔符模式將其輸入分解為標記,默認情況下匹配空格。然后可以使用各種 next 方法將生成的標記轉換為不同類型的值。
示例 1:使用循環
// Java Program to illustrate
// reading from Text File
// using Scanner Class
import java.io.File;
import java.util.Scanner;
public class ReadFromFileUsingScanner
{
public static void main(String[] args) throws Exception
{
// pass the path to the file as a parameter
File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt");
Scanner sc = new Scanner(file);
while (sc.hasNextLine())
System.out.println(sc.nextLine());
}
}
示例 2:不使用循環
// Java Program to illustrate reading from FileReader
// using Scanner Class reading entire File
// without using loop
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class ReadingEntireFileWithoutLoop
{
public static void main(String[] args)
throws FileNotFoundException
{
File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt");
Scanner sc = new Scanner(file);
// we just need to use \\Z as delimiter
sc.useDelimiter("\\Z");
System.out.println(sc.next());
}
}
從文件中讀取所有行。此方法確保在讀取所有字節或引發 I/O 錯誤或其他運行時異常時關閉文件。使用指定的字符集將文件中的字節解碼為字符。
句法:
public static List readAllLines(Path path,Charset cs)throws IOException
此方法將以下內容識別為行終止符:
\u000D 后跟 \u000A,回車后跟 LINE FEED
\u000A,換行
\u000D,回車
例子
// Java program to illustrate reading data from file
// using nio.File
import java.util.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.io.*;
public class ReadFileIntoList
{
public static List<String> readFileInList(String fileName)
{
List<String> lines = Collections.emptyList();
try
{
lines =
Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8);
}
catch (IOException e)
{
// do something
e.printStackTrace();
}
return lines;
}
public static void main(String[] args)
{
List l = readFileInList("C:\\Users\\pankaj\\Desktop\\test.java");
Iterator<String> itr = l.iterator();
while (itr.hasNext())
System.out.println(itr.next());
}
}
例子
// Java Program to illustrate
// reading from text file
// as string in 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
{
String data = readFileAsString("C:\\Users\\pankaj\\Desktop\\test.java");
System.out.println(data);
}
}
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習