(12) IO 스트림 (구) - 흐름 BufferedInputStream을 장식 /의 OutputStream

우리는 기능 IO 노드 흐름 및 처리 흐름 스트림으로 분할 될 수 눌러

노드 스트림 : 읽기 및 데이터 소스 또는 목적지에서 직접 데이터를 기록 할 수 있습니다

흐름 (흐름 장식) 처리 : 직접 데이터 소스 또는 대상에 연결되지를, 다른 스트림 캡슐화 (스트림 노드를 포함한다). 주요 목적은 운영을 단순화하고 성능을 향상시키는 것입니다.

버퍼 스트림 도입

우리는 전송 데이터 스트리밍 노드를 사용하는 경우, 데이터 전송 노드 단일 스트림은 너무 적게, 하드 디스크 읽기 및 전반적인 속도를하게 자주 쓰기, 그냥 개미처럼 높지 않다.

그리고 트럭이 움직여야처럼 우리는, 공정 스트림 버퍼 스트림으로 단일 전송 더 많은 데이터를 도입, 적은 하드 디스크 액세스 속도의 수는 향상되었습니다.

파일 복사 예제

600m의 흐름을 도입하지 않고 버퍼링 된 파일 복사, 그것은 걸리는 시간을 계산하고,이 스트림 버퍼의 사이즈는 노드 1024B

수입는 java.io *; 
Public 클래스 IOTest01 
{ 
	공공 정적 무효 메인 (문자열 []에 args) 
	{ 
		//文件源
		문자열 SRC = "1.rar"; 
		문자열 이명 령 = "1_cp.rar"; 
		//计算복사花费的时间
		길이 L1 = System.currentTimeMillis는 (); 
		사본 (SRC, 이명 령); 
		길이 L2 = System.currentTimeMillis는 (); 
		장시간 = L2-L1; 
		에서 System.out.println (시간); 
	} 

	공공 정적 무효 카피 (문자열 srcPath 문자열 destPath) { 
		//选择流
		//操作
		시도는 (의 InputStream 인) 신규 또는 FileInputStream (srcPath를 =; 
			OutputStream에 OS = 새의 FileOutputStream (destPath)) { 
			바이트 [] 플러시 = 새로운 바이트 [1,024 ]; 
			INT LEN = -1;
			동안 ((LEN = is.read (높이)) =! - 1) {//读入
				os.write (플러시, 0, 렌) ; // 쓰기 
			} 
			os.flush (); // 새로 고침 
		} 캐치 (IOException가 E) { 
			e.printStackTrace (); 
		} 
	} 
	
}

  

출력 시간 :

버퍼 스트림의 도입 후

 

질문하기

바로, 당신이합니다 (600메가바이트 파일)을 참조하는 속도를 높일 수있는 바이트 스트림의 풀 크기를 수정하는 고려된다 :

버퍼 풀 때 시간 바이트 [* 1000 (1024)]에서 취

 

 버퍼 풀 때 시간 바이트 [1024 * 100] 걸리는 :

  버퍼 풀 때 시간 바이트 [1024 * 50] 걸리는 :

  버퍼 풀 때 시간 바이트 [1024 * 20] 걸리는 :

  버퍼 풀 때 시간 바이트 [1024 * 8] 걸리는 :

 

 가시 버퍼 크기 및 소요 시간, 법되지 않습니다는 일이 어떻게?

추천

출처www.cnblogs.com/Scorpicat/p/11921536.html