Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

Javaالكلاس OutputStreamWriter في جافا

الكلاس OutputStreamWriter يكتب الأحرف في الملف كـ bytes حسب الترميز الذي نقوم بتحديده في الكونستركتور.


الكلاس OutputStreamWriter يحتوي على الـ constructors المذكورين في الجدول التالي.

الكونستركتور مع تعريفه
1 public OutputStreamWriter(OutputStream out) ينشئ كائن نوعه OutputStreamWriter يستخدم الترميز الإفتراضي.
2 public OutputStreamWriter(OutputStream out, Charset cs) ينشئ كائن نوعه OutputStreamWriter يستخدم ترميز كائن الـ Charset.
3 public OutputStreamWriter(OutputStream out, CharsetEncoder enc) ينشئ كائن نوعه OutputStreamWriter يستخدم ترميز كائن الـ CharsetEncoder.
4 public OutputStreamWriter(OutputStream out, String charsetName) ينشئ كائن نوعه OutputStreamWriter يستخدم ترميز كائن الـ String.


بعد أن يصبح كائن الـ OutputStreamWriter جاهزاً, يمكنك إستخدام الكثير من الدوال الجاهزة للكتابة في الملف أو لفعل أي شيء آخر.

الدالة مع تعريفها
public void close() throws IOException تغلق الـ OutputStreamWriter و تقطع الإتصال بين الـ Stream و أي مصدر كان متصلاً فيه.
public void flush() throws IOException تضمن عدم بقاء أي بيانات في الذاكرة, و ترسل أي بيانات موجودة في الـ buffer إلى كائن الـ OutputStreamWriter.
تستدعى دائماً قبل استدعاء الدالة close().
public String getEncoding() ترجع إسم الترميز المستخدم من قبل كائن الـ OutputStreamWriter.
public void write(int c) throws IOException تكتب الحرف الذي يعطى لها كـ argumentفي كائن الـ OutputStream.
public void write(char[] cbuf, int off, int len) throws IOException في كل مرة تستدعى فيها تكتب مجموعة أحرف من المصفوفة cbuf في كائن الـ OutputStream.
المتغير off يقصد به من أي عنصر في المصفوفة cbuf سيكتب في كائن الـ OutputStream.
المتغير len يقصد به كم عنصر من عناصر المصفوفة cbuf سيكتب في كائن الـ OutputStream.
public void write(String[] str, int off, int len) throws IOException في كل مرة تستدعى فيها تكتب مجموعة أحرف من النص str في كائن الـ OutputStream.
المتغير off يقصد به من أي حرف في النص str سيكتب في كائن الـ OutputStream.
المتغير len يقصد به كم حرف من أحرف النص str سيكتب في كائن الـ OutputStream.


مثال

في هذا المثال سنقوم بإنشاء ملف جديد و كتابة نص صغير فيه, ثم سنقوم بقراءة النص من الملف.

Main.java
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
 
public class Main {
 
    public static void main(String[] args) {
 
        try {
            // يشير إلى الملف الذي سنكتب البيانات فيه و في حال لم يكن موجوداً, سيتم إنشاءه FileOutputStream هنا قمنا بإنشاء كائن نوعه
            FileOutputStream fos = new FileOutputStream("c:\\MyFiles\\test.txt");
 
            // للكتابة في الملف OutputStreamWriter هنا قمنا بإنشاء كائن نوعه
            OutputStreamWriter osw = new OutputStreamWriter( fos, "UTF-16" );
 
            // هنا قمنا بكتابة نص في الملف ثم قمنا بتفريغ الذاكرة و إغلاق الكائن المتصل بالملف
            osw.write("الترميز" + " UTF-16 " + "يجعلك تخزن البيانات في جميع لغات العالم");
            osw.flush();
            osw.close();
 
            // يشير إلى الملف الذي ستقرأ البيانات منه FileInputStream هنا قمنا بإنشاء كائن نوعه
            FileInputStream fis = new FileInputStream("c:\\MyFiles\\test.txt");
 
            // للقراءة من الملف InputStreamReader هنا قمنا بإنشاء كائن نوعه
            InputStreamReader isr = new InputStreamReader( fis, "UTF-16" );
 
            // هنا قمنا بإنشاء حلقة تمر على جميع أحرف الملف, في كل دورة تقرأ حرف من الملف ثم تعرضه و بعدها قمنا بإغلاق الكائن المتصل بالملف
            int c;
            while ((c = isr.read()) != -1) {
                System.out.print((char)c);
            }
            isr.close();
        }
        catch(IOException e) {
            System.out.println("There is IOException!");
        }
 
    }
 
}

سنحصل على النتيجة التالية عند التشغيل.

الترميز UTF-16 يجعلك تخزن البيانات في جميع لغات العالم