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

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

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

کلاس SequenceInputStream در جاوا جهت خواندن داده از چندین input stream (برای مثال چند فایل ورودی) که در قالب یک sequence واحد به ترتیب به یکدیگر متصل شده اند، بکار می رود. این کلاس داده ها را به صورت متوالی و یکی پس از دیگری از input stream های متصل شده به هم می خواند.

به عبارت دیگر یک آبجکت از جنس کلاس SequenceInputStream نشانگر یک inputStream واحد است که چندین input stream دیگر را به ترتیب در خود جای داده.

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

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

public class SequenceInputStream extends InputStream

توابع سازنده (Constructor) از کلاس SequenceInputStream

No.
تابع سازنده (Constructor)
شرح
1
SequenceInputStream(InputStream s1, InputStream s2)
یک input stream جدید از داده هایی که از دو input stream به ترتیب می خواند، ایجاد می نماید. به عبارت دیگر دو آبجکت از جنس کلاس InputStream به عنوان ورودی گرفته، آن دو را به ترتیب به هم متصل کرده و در یک input stream جدید قرار می دهد.
2
SequenceInputStream(Enumeration e)
این تابع سازنده یک input stream جدید از داده های خوانده شده از یک آبجکت enumeration که نوع آن InputStream می باشد، ایجاد می نماید.

متدهای کلاس SequenceInputStream

No.
متد
شرح
1
int read()
بایت داده ای بعدی را از جریان ورودی (دنباله ای از بایت ها) می خواند.
2
int read(byte[] ary, int off, int len)
آرایه ای از بایت ها را به مقدار مشخص شده توسط پارامتر len که طول آرایه می باشد و از نقطه ی تعیین شده (مقدار پارامتر off) از جریان ورودی خوانده و آن را برمی گرداند.
3
int available()
تعداد حداکثر بایت های باقی مانده که از جریان ورودی برای مثال یک فایل قابل خواندن می باشد را برمی گرداند.
4
void close()
جریان ورودی را بسته و تمامی منابع سیستمی تخصیص یافته به input stream را آزاد می سازد.

مثال کاربردی از SequenceInputStream در Java

در مثال جاری، داده هایی را از دو فایل testin.txt و testout.txt خوانده و در خروجی چاپ می کنیم.

package com.javatpoint;  
import java.io.*;  
class InputStreamExample {    
  public static void main(String args[])throws Exception{    
   FileInputStream input1=new FileInputStream("D:\\testin.txt");    
   FileInputStream input2=new FileInputStream("D:\\testout.txt");    
   SequenceInputStream inst=new SequenceInputStream(input1, input2);    
   int j;    
   while((j=inst.read())!=-1){    
    System.out.print((char)j);    
   }    
   inst.close();    
   input1.close();    
   input2.close();    
  }    
}    

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

: testin.txt

Welcome to Java IO Programming.

testout.txt:

It is the example of Java SequenceInputStream class.

با اجرای برنامه، خروجی زیر را دریافت می نمایید. همان طور که مشاهده می کنید محتوای دو فایل به صورت متصل، متوالی و پشت سرهم نمایش داده شده است.

خروجی:

Welcome to Java IO Programming. It is the example of Java SequenceInputStream class.

در زیر مثالی را مشاهده می کنید که در آن داده از دو فایل خوانده شده و در فایل دیگری درج (نوشته) می شود. در این مثال داده از دو فایل testin1.txt و testin2.txt خوانده شده و در فایل دیگری به نام testout.txt درج می شود.

package com.javatpoint;   
import java.io.*;    
class Input1{    
  public static void main(String args[])throws Exception{    
   FileInputStream fin1=new FileInputStream("D:\\testin1.txt");    
   FileInputStream fin2=new FileInputStream("D:\\testin2.txt");    
   FileOutputStream fout=new FileOutputStream("D:\\testout.txt");      
   SequenceInputStream sis=new SequenceInputStream(fin1,fin2);    
   int i;    
   while((i=sis.read())!=-1)    
   {    
     fout.write(i);        
   }    
   sis.close();    
   fout.close();      
   fin1.close();      
   fin2.close();       
   System.out.println("Success..");  
  }    
}    

خروجی:

Succeess...

testout.txt:

Welcome to Java IO Programming. It is the example of Java SequenceInputStream class.  

مثال کاربردی از SequenceInputStream که داده را از چند فایل به وسیله ی آبجکت Enumeration می خواند

زمانی که لازم است داده هایی را چندین فایل (بیش از دو فایل) بخوانید، در آن صورت بایستی از Enumeration استفاده نمایید. جهت فراخوانی enumeration کافی است متد elements() از کلاس Vector را بر روی نمونه ای از Vector صدا زده و سپس محتوای آن را داخل متغیری از جنس Enumeration قرار دهید. در مثال زیر محتوای چهار فایل را خوانده و آن را در خروجی چاپ می کنیم.

package com.javatpoint;  
import java.io.*;    
import java.util.*;    
class Input2{    
public static void main(String args[])throws IOException{    
//creating the FileInputStream objects for all the files    
FileInputStream fin=new FileInputStream("D:\\a.txt");    
FileInputStream fin2=new FileInputStream("D:\\b.txt");    
FileInputStream fin3=new FileInputStream("D:\\c.txt");    
FileInputStream fin4=new FileInputStream("D:\\d.txt");    
//creating Vector object to all the stream    
Vector v=new Vector();    
v.add(fin);    
v.add(fin2);    
v.add(fin3);    
v.add(fin4);              
//creating enumeration object by calling the elements method    
Enumeration e=v.elements();      
//passing the enumeration object in the constructor    
SequenceInputStream bin=new SequenceInputStream(e);    
int i=0;      
while((i=bin.read())!=-1){    
System.out.print((char)i);    
}     
bin.close();    
fin.close();    
fin2.close();    
}    
}    

چهار فایل a.txt، b.txt، c.txt و d.txt به ترتیب دارای محتوای زیر می باشند:

a.txt:

Welcome

b.txt:

to

c.txt:

java

d.txt:

programming

خروجی:

Welcometojavaprogramming
1396/08/22 2763 1418
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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