کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – کار با کلاس ByteArrayInputStream در Java

آموزش Java – کار با کلاس ByteArrayInputStream در Java

اسم کلاس ByteArrayInputStream از دو کلمه تشکیل شده است: ByteArray و InputStream. همان طور که از اسم آن پیدا است، می توان با استفاده از آن آرایه ای از بایت ها ورودی (input stream) را خواند. کلاس ByteArrayInputStream داری یک حافظه ی buffer داخلی است که به وسیله آن می توان آرایه ای از بایت های ورودی را به صورت stream خواند. به عبارت دیگر نمونه ای از این کلاس به توسعه دهنده امکان می دهد تا از حافظه ی buffer به عنوان جریان ورودی (input stream) موقت استفاده کند. در این stream، داده ها از آرایه ای که نوع آن بایت است، خوانده می شود.

حافظه ی buffer داخلی کلاس ByteArrayInputStream با افزایش حجم داده های ورودی، به صورت اتوماتیک و متناسب با آن داده ها بزرگ می شود.

دستور تعریف کلاس ByteArrayInputStream در Java

public class ByteArrayInputStream extends InputStream  

توابع سازنده (constructor) کلاس ByteArrayInputStream

No.
تابع سازنده (Constructor)
شرح
1
ByteArrayInputStream(byte[] ary)
آرایه ای از بایت ها (آرایه از نوع byte) را به عنوان ورودی دریافت می کند. این تابع یک ByteArrayInputStream ایجاد کرده و از پارامتر ary به عنوان آرایه ای که در حافظه buffer جهت ذخیره ی اطلاعات ساخته شده، استفاده می کند.
2
ByteArrayInputStream(byte[] ary, int offset, int len)
آرایه ای از نوع byte به عنوان آرگومان دریافت کرده و داده های ورودی را در آرایه ی موجود در buffer ذخیره می کند. این تابع دو پارامتر دیگر گرفته که نقطه ی شروع خواندن داده از آرایه و تعداد خانه هایی که باید از آن خوانده شود را مشخص می کنند.

متدهای کلاس ByteArrayInputStream

No.
متد
شرح
1
int available()
تعداد بایت های باقی مانده (خوانده نشده) از جریان ورودی را محسابه کرده و در قالب عدد صحیح برمی گرداند.
2
int read()
این تابع بایت بعدی را از جریان ورودی می خواند.
3
int read(byte[] ary, int off, int len)
به تعداد بایت های مشخص شده از آرایه ی بایتی موجود در جریان ورودی و از نقطه ی مشخص شده در آرایه (در قالب آرگومان off)، داده می خواند.
4
boolean markSupported()
این تابع بررسی می کند آیا جریان ورودی (input stream) از متدهای mark/reset پشتیبانی می کند یا خیر و به عنوان خروجی یک مقدار بولی را برمی گرداند.
5
long skip(long x)
تابع حاضر تعداد معینی از بایت ها (بر اساس مقدار پارامتر x) را از جریان ورودی مورد نظر نادیده گرفته و به عبارتی آن ها را نمی خواند.
6
void mark(int readAheadLimit)
به وسیله ی این تابع می توان محلی کنونی که بایت ها از آنجا به بعد نشانه گذاری شده و تا سقف معین شده (بر اساس مقدار پارامتر readAheadLimit) خوانده و ذخیره می شوند را تغییر داد.
این متد برای تنظیم مکان خواندن داده ها در stream مورد نظر بکار می رود.
7
void reset()
بافر را به مکان نشانه گذاری شده توسط متد mark (محل خواندن داده ها از input stream) جهت خواندن مجدد داده ها، برمی گرداند. این متد بافری که آرایه ی بایتی در آن ذخیره شده را reset می کند.
8
void close()
این متد برای بستن جریان ورودی یا آبجکت ByteArrayInputStream بکار می رود. لازم به ذکر است که فراخوانی این متد بر روی آبجکت مزبور اثری ندارد.

مثال کاربردی از کلاس ByteArrayInputStream در Java

در زیر توسعه دهنده یک نمونه از کلاس ByteArrayInputStream ایجاد کرده و آرایه ای از بایت ها را به صورت جریان ورودی (input stream یا جریانی از بایت ها) می خواند.

package com.javatpoint;  
import java.io.*;  
public class ReadExample {  
public static void main(String[] args) throws IOException {  
byte[] buf = { 35, 36, 37, 38 };  
// Create the new byte array input stream  
ByteArrayInputStream byt = new ByteArrayInputStream(buf);  
int k = 0;  
while ((k = byt.read()) != -1) {  
//Conversion of a byte into character  
char ch = (char) k;  
System.out.println("ASCII value of Character is:" + k + "; Special character is: " + ch);  
}  
}  
}  

خروجی:

ASCII value of Character is:35; Special character is: #
ASCII value of Character is:36; Special character is: $
ASCII value of Character is:37; Special character is: %
ASCII value of Character is:38; Special character is: &
1396/08/22 2884 1415
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...