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 ByteArrayOutputStream 类

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

java.io包的ByteArrayOutputStream类可用于写入输出数据数组(以字节为单位)。

它继承了OutputStream抽象类。

ملاحظة:在ByteArrayOutputStream中维护一个存储数据的内部字节数组。

创建一个ByteArrayOutputStream

为了创建字节数组输出流,我们必须首先导入java.io.ByteArrayOutputStream包。导入包后,就可以创建输出流。

//创建一个默认大小的ByteArrayOutputStream
ByteArrayOutputStream out = new ByteArrayOutputStream();

在这里,我们创建了一个输出流,它将数据写入默认大小为32字节的字节数组中。但是,我们可以更改数组的默认大小。

//创建具有指定大小的ByteArrayOutputStream
ByteArrayOutputStream out = new ByteArrayOutputStream(int size);

在此,size指定数组的长度。

ByteArrayOutputStream的方法

ByteArrayOutputStream类提供OutputStream类中存在的不同方法的实现。

write()方法

  • write(int byte) - 将指定的字节写入输出流

  • write(byte[] array) - 将指定数组中的字节写入输出流

  • write(byte[] arr, int start, int length)- 从位置start开始将等于length的字节数写入数组的输出流

  • writeTo(ByteArrayOutputStream out1) -将当前输出流的全部数据写入指定的输出流

示例:ByteArrayOutputStream写入数据

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is a line of text inside the string.";
    try {
    //إنشاء تدفق
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      byte[] array = data.getBytes();
      //كتابة البيانات في流出
      out.write(array);
      //استرجاع البيانات من التدفق بصيغة سلسلة
      String streamData = out.toString();
      System.out.println("تدفق: " + streamData);
      out.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

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

تدفق: This is a line of text inside the string.

في المثال السابق، قمنا بإنشاء تدفق من البتات يُدعى output.

ByteArrayOutputStream output = new ByteArrayOutputStream();

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

ملاحظة:يستخدم طريقة getBytes() في البرنامج لتحويل السلسلة إلى مجموعة من البتات.

وصول البيانات من ByteArrayOutputStream

  • toByteArray() - يعيد قيمة مجموعة من البتات تحتوي على بيانات التدفق

  • toString() - يعيد قيمة سلسلة تحتوي على جميع بيانات التدفق

على سبيل المثال،

import java.io.ByteArrayOutputStream;
class Main {
  public static void main(String[] args) {
    String data = "This is data.";
    try {
      //إنشاء流出
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      //كتابة البيانات في流出
      out.write(data.getBytes());
      //يعود قيمة مجموعة من البتات
      byte[] byteData = out.toByteArray();
      System.out.print("استخدام toByteArray() البيانات: ");
      for(int i=0; i<byteData.length; i++) {
        System.out.print((char)byteData[i]);
      }
      //يعود قيمة سلسلة
      String stringData = out.toString();
      System.out.println("\nاستخدام toString() البيانات: " + stringData);
      out.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

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

استخدام البيانات من toByteArray(): This is data.
استخدام البيانات من toString(): This is data.

في المثال السابق، أنشأنا مصفوفة لتخزين البيانات التي يعود إليها طريقة toByteArray()

ثم نستخدم دورة for لزيارة كل بيت في المصفوفة. هنا، نستخدم تحويل النوع لتحويل كل بيت إلى حرف مناسب.

طريقة close()

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

لكن، طريقة close() غير صالحة في فئة ByteArrayOutputStream. حتى بعد إجراء طريقة close()، يمكننا استخدام طرق هذه الفئة.

طرق أخرى لـ ByteArrayOutputStream

الطريقةوصف المحتوى
size()العودة إلى حجم المصفوفة في مخرج الدفق
flush()إزالة مخرج الدفق