English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، سنستخدم الأمثلة لدراسة Java OutputStreamWriter وطرقه.
كلاس OutputStreamWriter في مكتبة java.io يمكن استخدامها لتحويل البيانات النصية إلى شكل بيانات البايت.
إنه يرث من الفئة التجريديّة Writer.}
يمكن استخدام OutputStreamWriter مع تدفقات الإخراج الأخرى. إنه يُعرف أيضًا بأنه جسر بين تدفقات الإخراج والكتابة، لأن OutputStreamWriter يحول الحروف إلى بايتات.
على سبيل المثال، تحتاج بعض الحروف إلى 2 بايت لتخزينها في ذاكرة التخزين. لتبديل هذا النوع من البيانات، يمكننا استخدام كاتب تدفق الإخراج، والذي يتحول الحروف إلى البايتات المناسبة ويخزنها معًا.
لإنشاء 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 تنفيذًا للمستخدمين المختلفين التي تظهر في Writer class.
write() - كتب حرف إلى الكاتب
write(char[] array) - كتب حروف الجدول المحدد في الكاتب
write(String data) - كتب النص المحدد في الكاتب
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()方法可用于获取用于将数据写入输出流的编码类型。例如,
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()، لا يمكن استخدام الكاتب للكتابة في البيانات.
الطريقة | وصف |
---|---|
flush() | إجباري كتابة جميع البيانات الموجودة في الكاتب إلى وجهة الوجهة المحددة |
append() | إدراج الحرف المحدد في الكاتب الحالي |