Java中的IO字節流
阿新 • • 發佈:2017-12-26
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 publicclass 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=newByteArrayOutputStream(); 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字節流