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

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

تحكم العملية في Java

مجموعات Java Array

Java توجيه الأحداث (I)

Java توجيه الأحداث (II)

Java توجيه الأحداث (III)

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

قائمة Java (List)

Java Queue (الصف)

مجموعات Java Map

مجموعات Java Set

Java Input/Output (I/O)

Java Reader/Writer

مواضيع أخرى في Java

كلاس Java OutputStreamWriter

في هذا الدليل، سنستخدم الأمثلة لدراسة Java OutputStreamWriter وطرقه.

كلاس OutputStreamWriter في مكتبة java.io يمكن استخدامها لتحويل البيانات النصية إلى شكل بيانات البايت.

إنه يرث من الفئة التجريديّة Writer.}

يمكن استخدام OutputStreamWriter مع تدفقات الإخراج الأخرى. إنه يُعرف أيضًا بأنه جسر بين تدفقات الإخراج والكتابة، لأن OutputStreamWriter يحول الحروف إلى بايتات.

على سبيل المثال، تحتاج بعض الحروف إلى 2 بايت لتخزينها في ذاكرة التخزين. لتبديل هذا النوع من البيانات، يمكننا استخدام كاتب تدفق الإخراج، والذي يتحول الحروف إلى البايتات المناسبة ويخزنها معًا.

إنشاء OutputStreamWriter

لإنشاء OutputStreamWriter، يجب علينا أولاً استيراد حزمة java.io.OutputStreamWriter. بعد استيراد الحزمة، يمكننا إنشاء كاتب تدفق الإخراج هنا.

//إنشاء OutputStream
FileOutputStream file = new FileOutputStream(String path);
//创建一个OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

في هذا المثال، قمنا بإنشاء OutputStreamWriter وFileOutputStream مع تسمية output وfile.

في هذا المثال، نستخدم الترميز الافتراضي للغة لكتابة الحروف في تدفق الإخراج.

لكن يمكننا تحديد نوع الترميز للغة الذي سنستخدمه للكتابة البيانات (UTF8أوUTF16)。

//إنشاء OutputStreamWriter مع تحديد ترميز اللغة
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);

في هذا السياق، نستخدم Charset هذا الكائن لتحديد نوع الترميز للغة.

أساليب OutputStreamWriter

يقدم OutputStreamWriter تنفيذًا للمستخدمين المختلفين التي تظهر في Writer class.

طريقة write()

  • write() - كتب حرف إلى الكاتب

  • write(char[] array) - كتب حروف الجدول المحدد في الكاتب

  • write(String data) - كتب النص المحدد في الكاتب

مثال: OutputStreamWriter كتب البيانات في الملف

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class Main {
  public static void main(String args[]) {
    String data = "This is a line of text inside the file.";
    try {
      // 创建 FileOutputStream
      FileOutputStream file = new FileOutputStream("output.txt");
      //创建一个OutputStreamWriter
      OutputStreamWriter output = new OutputStreamWriter(file);
      //将字符串写入文件
      output.write(data);
      //关闭 writer
      output.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

في المثال السابق، استخدمنا تدفق ملفات الخروج لإنشاء قارئ تدفق الخروج.output.txtرابط الملف.

FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter output = new OutputStreamWriter(file);

لإدخال البيانات إلى الملف، استخدمنا طريقة write().

في هذا السياق، عند تشغيل البرنامج،output.txtسيتم تعبئة الملف بالمحتوى التالي.

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

getEncoding()方法

getEncoding()方法可用于获取用于将数据写入输出流的编码类型。例如,

import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;
class Main {
  public static void main(String[] args) {
    try {
      // 创建一个输出流
      FileOutputStream file = new FileOutputStream("output.txt");
      // 创建具有默认编码的输出流阅读器
      OutputStreamWriter output1 = new OutputStreamWriter(file);
      // 创建指定编码的输出流阅读器
      OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8"));
      // 返回输出流的字符编码
      System.out.println("output1的字符编码: " + output1.getEncoding());
      System.out.println("output2的字符编码: " + output2.getEncoding());
      // 关闭 reader
      output1.close();
      output2.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

نتائج الخروج

ترميز output1: Cp1252
ترميز output2: UTF8

في المثال السابق، قمنا بإنشاء 2 كتابة تدفق خروج، يُدعى كل منهما output1 و output2.

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

  • ترميز output2 المحددUTF8لذلك، يعود طريقة getEncoding() إلى الترميز المحدد.

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

طريقة close()

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

طرق أخرى لـ OutputStreamWriter

الطريقةوصف
flush()إجباري كتابة جميع البيانات الموجودة في الكاتب إلى وجهة الوجهة المحددة
append()إدراج الحرف المحدد في الكاتب الحالي