1. 程式人生 > >Java中的IO字節流

Java中的IO字節流

arraylist pos targe leo img auto throws rec void

關閉流的順序:

  * 當A依賴B的時候先關閉A,再關閉B
  * 帶緩沖的流最後關閉的時候會執行一次flush

ByteArrayInputStream是字節數組輸入流,作用是把字節串(或叫字節數組)變成輸入流的形式

 1 package object.io;
 2 
 3 import java.io.ByteArrayInputStream;
 4 import java.io.ByteArrayOutputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 
 8 public
class ByteArrayStream { 9 10 public static void main(String[] args) throws IOException { 11 // TODO Auto-generated method stub 12 byte[] b=new byte[]{‘a‘,‘b‘,‘c‘}; 13 //將字節輸入轉成流 14 ByteArrayInputStream input=new ByteArrayInputStream(b); 15 ByteArrayOutputStream output=new
ByteArrayOutputStream(); 16 FileOutputStream fileOut=new FileOutputStream("D:\\Program Files (x86)\\io\\ByteArray.txt"); 17 int length; 18 while((length=input.read())!=-1){ 19 fileOut.write(length); 20 } 21 //將緩沖區的內容刷新到輸出流 22 output.writeTo(fileOut);
23 input.close(); 24 output.close(); 25 fileOut.close(); 26 } 27 28 29 }

SequenceInputStream :將多個文件合並成一個文件
技術分享圖片
 1 package object.io;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.FileNotFoundException;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.SequenceInputStream;
 8 import java.util.ArrayList;
 9 import java.util.Collections;
10 import java.util.Enumeration;
11 import java.util.List;
12 
13 
14 public class SequenceStream {
15     
16     //將多個文件合並到一個文件
17     public static void main(String[] args) throws IOException {
18         // TODO Auto-generated method stub
19     
20         FileInputStream f1=new FileInputStream("D:\\Program Files (x86)\\io\\sequence1.txt");
21         FileInputStream f2=new FileInputStream("D:\\Program Files (x86)\\io\\sequence2.txt");
22         FileInputStream f3=new FileInputStream("D:\\Program Files (x86)\\io\\sequence3.txt");
23         List<FileInputStream> list=new ArrayList<FileInputStream>();
24         list.add(f1);
25         list.add(f2);
26         list.add(f3);
27         
28         //將集合轉換成枚舉類型
29         Enumeration<FileInputStream> e=Collections.enumeration(list);
30         
31         //接收的是枚舉類型,如上圖所示
32         SequenceInputStream s=new SequenceInputStream(e);
33         
34         FileOutputStream outputStream=new FileOutputStream("D:\\Program Files (x86)\\io\\sequence4.txt");
35         int length;
36         while((length=s.read())!=-1){
37             outputStream.write(length);
38         }
39         f1.close();
40         f2.close();
41         f3.close();
42         s.close();
43         outputStream.close();
44     }
45 
46 }

BufferedInputStream :緩沖字節輸入流,是一個高級流(處理流),與其他低級流配合使用,將其他流包裝起來。效率高
BufferedInputStream :同BufferedInputStream 
 1 package object.io;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 
 9 public class BufferStream {
10     public static void main(String[] args) throws IOException {
11         FileInputStream input=new FileInputStream("D:\\Program Files (x86)\\io\\bufferStream1.txt");
12         BufferedInputStream binput=new BufferedInputStream(input);
13         FileOutputStream output=new FileOutputStream("D:\\Program Files (x86)\\io\\bufferStream2.txt");
14         BufferedOutputStream boutput=new BufferedOutputStream(output);
15         int length;
16         while((length=binput.read())!=-1){
17             boutput.write(length);
18         }
19         //將緩沖區的內容刷新到文件
20         boutput.flush();
21         input.close();
22         binput.close();
23         output.close();
24         boutput.close();
25     }
26 }

Java中的IO字節流