当前位置:网站首页>Comparison between FileInputStream and bufferedinputstream

Comparison between FileInputStream and bufferedinputstream

2022-07-06 13:20:00 [email protected]

InputStream yes Java Standard library provides the most basic input stream , be located java.io In the bag ,InputStream Is an abstract class , Is a superclass of all input streams

FileInputStream yes InputStream Subclasses of , Reading data from a file stream .FileInputStream It's reading a file to do InputStream.

BufferedInputStream Is a cached input stream . Inherited from FilterInputStream. The function is to add some functions to another input stream .BufferedInputStream It's in some other InputStream Outside , It's a caching function , To improve the one inside InputStream Performance of ( If possible ), The function is to add some functions to another input stream . It can't separate itself from the one in it , So you can put BufferedInputStream Set on FileInputStream Outside , To improve FileInputStream Performance of .

The difference is :

FileInputStream It's a byte stream ,BufferedInputStream Is a byte buffer stream , Use BufferedInputStream Reading resource ratio FileInputStream The efficiency of reading resources is high ,FileInputStream Of read() Methods will block ;

That is to say , When the buffer size ratio 8192 When I was a child ,BufferedInputStream It's more efficient .

BufferedInputStream One defaults to 8192 Byte buffer , When the customized buffer is smaller than 8192 When , By default, it is read from the hard disk at one time 8192 Bytes into memory , Then only return data according to the customized buffer amount each time , The performance is good because it reduces the number of times to read the hard disk .

The following code will better help you understand .

Code implementation :

FileInputStream read() Method realization :

public class Demo05 {
	public static void main(String[] args) throws IOException {
		//InputStream Byte input stream parent 
		
		// characteristic : Read the input stream of byte content 
		FileInputStream fis = new FileInputStream("E:\\KuGou\\test02.txt");
		
		// Read byte by byte : Every time you call read() Method , Will read the disk once , Return to one int Byte value of type 
		int data = -1;
		while((data=fis.read())!=-1) {
			System.out.println(data);
		}
		System.out.println("-----------");
		
		// Mode two 
		// Bulk read ( Self built buffer ): Every time you call read( Buffer byte array ) Method , Will read the disk once , Return to this 
		// And will read the content , Fill in the self built buffer 
		// Read to the end of the file , return -1
		byte[] buff = new byte[4096];// The byte array represents a buffer 
		
		int len = -1;
		while((len=fis.read(buff))!= -1) {
			System.out.println(Arrays.toString(buff));
		}
   }
}

BufferedInputStream read() Method code implementation

public class Demo05 {
	public static void main(String[] args) throws IOException {
		//InputStream Byte input stream parent 
        //BufferedInputStream when FilterInputStream packing ( decorate ) Subclasses of the device 
		// characteristic : Built in cache ( Default 8192 Bytes ), Must cooperate FileInputStream Class to work 
		
		BufferedInputStream bos = new BufferedInputStream(new FileInputStream("E:\\ Wallpaper sum \\ wallpaper \\ Yang Yang \\young.jpg"));
			
		
		// Read 
		// Mode one : Read byte by byte , Every call read() Method , All will be here BufferedInputStream Read a byte from the cache of 
		// After reading the contents of the buffer , Will be one-time fill full 
		//bos.read();
		
		// Mode two :( recommend )
		// Bulk read ( Self built cache ):
		byte[] buffData =new byte[128];
		int size = -1;
		while((size = bos.read(buffData))!=-1) {
			System.out.println(Arrays.toString(buffData));
		}
		
	}

}

原网站

版权声明
本文为[[email protected] Yummy]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916019897.html