یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84 دوره هوش مصنوعی با تخفیف ویژه، فقط با کد AI84
🎯 ثبت نام

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

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

کلاس BufferedInputStream در جاوا جهت خواندن اطلاعات از دنباله ای از بایت ها و ذخیره ی موقت آن ها در buffer بکار می رود. این کلاس همان طور که از اسم آن پیدا است، برای افزایش کارایی و سرعت به صورت داخلی از مکانیزم buffer و ذخیره موقت اطلاعات در حافظه واسط بهره می گیرد.

کلاس BufferedInputStream دو متد mark() و reset() را در اختیار توسعه دهنده قرار می دهد که توسعه دهنده با آن ها می تواند در stream مورد نظر به عقب پریده و داده هایی از آن را مجددا بخواند.

نکات مهمی که درباره ی BufferedInputStream باید بخاطر داشته باشید:

  • به مجرد اینکه بایت هایی از stream خوانده یا نادیده (skip) گرفته می شود، buffer داخلی به اندازه ی لازم از input stream مورد نظر مجددا پر شده و در آن واحد تعداد زیادی بایت از این جریان ورودی خوانده می شود.
  • زمانی که آّبجکتی از جنس کلاس BufferedInputStream در حافظه ایجاد می شود، به دنبال آن یک buffer array (آرایه ای در بافر) به صورت داخلی ایجاد شده که میزبان موقت داده های خوانده شده از input stream می باشد.

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

در زیر نحوه ی تعریف کلاس Java.io.BufferedInputStream را مشاهده می کنید:

1
public class BufferedInputStream extends FilterInputStream  <button></button>

توابع سازنده (Constructor) کلاس BufferdInputStream در Java

No.
تابع سازنده (constructor)
شرح
1
BufferedInputStream(InputStream IS)
یک نمونه از کلاس BufferedInputStream ایجاد کرده و یک آبجکت از جنس کلاس InputStream به عنوان پارامتر جهت خواندن دنباله ی بایت ها از آن دریافت کرده و آن را برای استفاده در آینده ذخیره می کند.
2
BufferedInputStream(InputStream IS, int size)
یک نمونه از کلاس BufferedInputStream با حافظه ی واسطی (buffer) که دارای ظرفیت مشخص شده توسط پارامتر Size می باشد، ایجاد کرده و آبجکتی از جنس کلاس InputStream جهت خواندن دنباله ی بایت ها از آن دریافت و برای استفاده در آینده ذخیره می کند.

متدهای کلاس BufferedInputStream در Java

No.
متد
شرح
1
int available()
برآوردی از تعداد بایت هایی که از input stream مورد نظر مانده تا خوانده و بازیابی (یا نادیده گرفته) شود، برمی گرداند، بدون اینکه به سبب فراخوانی متد دیگر بر روی این input stream (برای مثال از thread دیگر) وضعیت blocking رخ دهد.
2
int read()
بایت داده ای بعدی را از input stream مورد نظر می خواند.
3
int read(byte[] b, int off, int ln)
آرایه ای از بایت ها را به صورت یکجا از input stream که دنباله ای از بایت های ورودی است، از نقطه ی معین شده (پارامتر off) و به تعداد مشخص (مقدار پارامتر ln) می خواند.
4
void close()
It closes the input stream and releases any of the system resources associated with the stream.
5
void reset()
بایت ها یا کاراکترها را از نقطه ای در stream که متد mark آخرین بار در آن صدا زده شده است، مجددا می خواند. به عبارت دیگر به نقطه ای در stream که داده ها توسط متد mark از آنجا به بعد (تا سقف تعیین شده) ذخیره شده اند، برگشته و دوباره همان داده ها را می خواند.
6
void mark(int readlimit)
زمانی که توسعه دهنده mark() را بر روی آّبجکت BufferedInputStream فراخوانی می کند، این متد از نقطه ی نشانه گذاری شده به بعد شروع به ذخیره و نگهداری داده های خوانده شده از منبع ورودی مورد نظر در حافظه ی buffer داخلی می کند. پارامتر readlimit نشانگر حداکثر تعداد بایت یا کاراکترهایی است که توسعه دهنده می خواهد از نقطه ی فراخوانی متد mark() به بعد (تا سقف تعیین شده) ذخیره شود.
به عبارت دیگر این متد یک نقطه ی مشخص در ورودی (input stream) را نشانه گذاری می کند که به هنگام فراخوانی متد reset()، داده ها دوباره از آن نقطه (آخرین نقطه ای که متد mark در آن فراخوانی شده) خوانده می شوند.
7
long skip(long x)
به تعداد بایت های مشخص شده در پارامتر ورودی (x) بایت های داده ای را input stream مورد نظر را نادیده گرفته یا دور می ریزد.
8
boolean markSupported()
این متد بررسی می کند آیا input stream جاری متدهای mark و reset را پشتیبانی می کند یا خیر.

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

در زیر مثال ساده ای را مشاهده می کنید که در آن داده ها به واسطه ی آبجکت کلاس BufferedInputStream از فایل ورودی خوانده می شوند:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.javatpoint; 
import java.io.*; 
public class BufferedInputStreamExample{   
public static void main(String args[]){   
try{   
FileInputStream fin=new FileInputStream("D:\\testout.txt");   
BufferedInputStream bin=new BufferedInputStream(fin);   
int i;   
while((i=bin.read())!=-1){   
System.out.print((char)i);   
}   
bin.close();   
fin.close();   
}catch(Exception e){System.out.println(e);}   
}   
<button></button>

در این مثال فرض را بر این می گذاریم که فایل "testout.txt" حاوی محتوای زیر می باشد:

1
javaTpoint<button></button>

خروجی:

1
javaTpoint<button></button>
1396/08/22 2836 1318
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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