English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

تحكم في تدفق Java

Java مصفوفات

Java مبرمجة موجه للأغراض العامة (I)

Java مبرمجة موجه للأغراض العامة (II)

Java مبرمجة موجه للأغراض العامة (III)

معالجة الاستثناءات Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java FileReader فئة

在本教程中,我们将借助示例学习Java FileReader及其方法。

java.io包的FileReader类可用于从文件中读取数据(以字符为单位)。

它继承了InputSreamReader类。

在学习之前FileReader,请确保您了解ملف Java.

创建一个FileReader

为了创建一个文件阅读器,我们必须首先导入java.io.FileReader包。导入程序包后,这里是创建文件阅读器的方法。

1.使用文件名

FileReader input = new FileReader(String name);

在这里,我们创建了一个文件阅读器,该文件阅读器将链接到所指定的文件名。

2.使用文件的对象

FileReader input = new FileReader(File fileObj);

在这里,我们创建了一个文件读取器,该文件读取器将链接到文件对象所指定的文件。

在上面的示例中,文件中的数据使用某些默认字符编码存储。

但是,由于Java 11,我们也可以在文件中指定字符编码的类型(UTF-8UTF-16)

FileReader input = new FileReader(String file, Charset cs);

在这里,我们使用Charset类来指定文件阅读器的字符编码。

FileReader的方法

FileReader类提供Reader类中存在的不同方法的实现。

read()方法

  • read() - 从阅读器读取单个字符

  • read(char[] array) - 从阅读器读取字符并将其存储在指定的数组中

  • read(char[] array, int start, int length) - 从读取器读取等于length的字符数,并从位置start开始存储在指定的数组中

例如,假设我们有一个名为input.txt的文件,其中包含以下内容。

هذا هو سطر نصي داخل الملف.

让我们尝试使用读取文件FileReader。

import java.io.FileReader;
class Main {
  public static void main(String[] args) {
    //创建一个字符数组
    char[] array = new char[100];
    try {
      //使用FileReader创建阅读器
      FileReader input = new FileReader("input.txt");
      //قراءة الأحرف
      input.read(array);
      System.out.println("بيانات في الملف: ");
      System.out.println(array);
      //关闭 reader
      input.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

نتائج الإخراج

بيانات في الملف:
هذا هو سطر نصي داخل الملف.

在上面的示例中,我们创建了一个名为input的文件阅读器。文件阅读器与文件input.txt链接。

FileInputStream input = new FileInputStream("input.txt");

为了从文件中读取数据,我们使用了read()方法。

getEncoding()方法

getEncoding()方法可用于获取用于在文件中存储数据的编码类型。例如,

import java.io.FileReader;
import java.nio.charset.Charset;
class Main {
  public static void main(String[] args) {
    try {
      //使用默认编码创建一个FileReader
      FileReader input1 = new FileReader("input.txt");
      //创建一个FileReader指定编码
      FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8"));
      //返回文件阅读器的字符编码
      System.out.println("input1的字符编码: " + input1.getEncoding());
      System.out.println("input2的字符编码: " + input2.getEncoding());
      //关闭 reader
      input1.close();
      input2.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

نتائج الإخراج

تشفير الحروف لـ input1: Cp1252
تشفير الحروف لـ input2: UTF8

في المثال السابق، قمنا بإنشاء 2 قارئ ملفات، يُدعى كل منهما input1 و input2.

  • لم يتم تحديد تشيفر الحروف لـ input1. لذلك، يعود طريقة getEncoding() إلى تشيفر الحروف الافتراضي.

  • input2 م指定 تشيفر الحروفUTF8لذلك، يعود طريقة getEncoding() إلى تشيفر الحروف المحدد.

ملاحظةنحن نستخدم طريقة Charset.forName() لتحديد نوع تشيفر الحروف.

طريقة close()

لإغلاق قارئ الملف، يمكننا استخدام طريقة close(). بعد استدعاء طريقة close()، لن نتمكن من استخدام القارئ لقراءة البيانات.

طرق أخرى لـ FileReader

الطريقةوصف
ready()تحقق مما إذا كان قارئ الملف جاهزًا للقراءة
mark()تسجيل موقع البيانات التي تم قراءتها في قارئ الملف
reset()إعادة تعيين القارئ، العودة إلى الموقع الذي تم تعيينه للعلامة في القارئ