첫째, 프로세스 흐름 :
향상된 성능을 제공하는 스트림 노드.
노드 및 프로세스 흐름 스트림 사이 둘째, 관계
에서 노드 스트림 (바이트 스트림, 문자 스트림) IO 첫 번째 줄 동작은 모든 작업들을 통해 수행해야합니다;
공정 스트림은 다른 스트림들 (또는 동작 효율을 향상시키기 위해 유연성) 처리 될 수있다.
셋째, 버퍼 흐름
1 버퍼 바이트 스트림
BufferedInputStream을
의 BufferedOutputStream
IOBuffer 패키지;
수입 java.io.BufferedInputStream의;
수입 java.io.BufferedOutputStream에;
수입 java.io.File에;
수입 java.io.FileInputStream의;
수입 java.io.FileOutputStream의;
수입 때 java.io.IOException;
수입 java.io.InputStream를;
수입 java.io.OutputStream에;
/ **
* 공정 스트림 (스트림 버퍼 바이트)
* 바이트 스트림 파일이 복사됩니다 + 성능을 향상, 버퍼 흐름
* 버퍼 스트림 (스트림 노드)
* /
@SuppressWarnings ( "모든")
공용 클래스 Demo01 {
공공 정적 무효 메인 (문자열 []에 args) {
문자열 srcPath = "G : /1314.jpg";
문자열 destPath = "G : /try/520.jpg";
{시도
CopyFile 수 (srcPath, destPath);
} 캐치 (IOException이 전자) {
e.printStackTrace ();
}
}
공공 정적 무효 CopyFile 수 (문자열 srcPath, 문자열 destPath)는 IOException가 슬로우
{
// 1 , 연락처 소스 존재 확립 ( 및 파일 ) + 대상 ( 파일이 존재하지 않을 수 있습니다 )
파일 SRC = 새로운 파일 (srcPath);
파일의 최종 도착 = 새로운 파일 (destPath);
만약 (! src.isFile ())
{
에서 System.out.println ( " 파일 만 복사 할 수 있습니다 ");
( "새 IOException가 슬로우 만 파일을 복사 할 수 있습니다 ");
}
// 2 버퍼 유동 스트림 선택 ( 바이트의 입력 스트림 )
의 InputStream은 = 새 BufferedInputStream을하다 (새 FileInputStream에 (SRC));
OutputStream에 새로운 OS의 BufferedOutputStream = (신규의 FileOutputStream (최종 도착));
3 // , 파일 복사주기 + 읽기 + 쓰기
바이트 [] = 플러시 새로운 바이트 [1024];
INT LEN = 0;
반면 (-1! = (LEN = is.read (플러시)))
{
// 쓰기
os.write (세척 0 렌);
}
) (os.flush; //은 브러시를 강제로
// 제 개폐 후의 스트림을 닫
os.close ();
가까운();
}
}
2 , 문자 스트림 버퍼
BufferedReader의 새로운 내의 readLine () 텍스트 행을 읽을 수 있습니다.
BufferedWriter의 새로운 개행 () 광고 세퍼레이터를 쓴다.
IOBuffer 패키지;
수입 java.io.BufferedReader의;
수입 java.io.BufferedWriter;
수입 java.io.File에;
수입 java.io.FileNotFoundException;
수입 java.io.FileReader;
수입 java.io.FileWriter;
수입 때 java.io.IOException;
/ **
*
* 문자 스트림 버퍼 + 새로운 방법 (다중 상태가 발생하지 않을 수 있음)
* /
공용 클래스 Demo02 {
공공 정적 무효 메인 (문자열 []에 args) {
문자열 srcPath = "G : /oo.txt";
문자열 destPath = "G : /xx.txt";
// 소스 만들기
파일 SRC = 새로운 파일 (srcPath);
파일의 최종 도착 = 새로운 파일 (destPath);
// 후자는 새로운 방법을 사용하는 경우 선택 유동 스트림 버퍼는 다형은 사용할 수 없다.
// 새로운 서브 클래스가 다형 적으로 사용할 수 없습니다합니다.
/ * 리더 리더 = NULL;
작가 작가 = NULL;
리더 = 새의 BufferedReader (새을 FileReader (SRC));
작가 = 새로운 BufferedWriter의 (새 FileWriter (이명 령));
reader.read (플러시)
writer.write (세척 0 렌) * /
리더의 BufferedReader = NULL;
작가 = NULL의 BufferedWriter;
{시도
리더 = 새의 BufferedReader (새을 FileReader (SRC));
작가 = 새로운 BufferedWriter의 (새 FileWriter (이명 령));
// 읽기 작업
// 버퍼 스트림 운영의 새로운 방법의 문자
문자열 라인 = NULL; // 읽기 라인으로 라인 의 BufferedReader 새로운 작성한 Readline ()
(NULL! = (라인 = reader.readLine ())) 동안
{
writer.write (행);
//writer.append("\r\n");// 줄 바꿈
writer.newLine (); // 줄 새로운 방법을 깰
}
writer.flush ();
} 캐치 (FileNotFoundException이 전자) {
e.printStackTrace ();
에서 System.out.println ( " 파일이 없습니다 ");
} 캐치 (IOException이 전자) {
e.printStackTrace ();
}
드디어
{
(NULL! = 리더 있으면)
{
{시도
writer.close ();
reader.close ();
} 캐치 (IOException이 전자) {
e.printStackTrace ();
}
}
}
}
}
넷째, 변환 스트림
(A) 문자 스트림 프로세스 왜곡에 바이트 스트림 (코드 세트 설정 디코딩)
디코딩 : 진 - > 디코드 문자 집합 - > 문자
인코딩 : 문자 - > 코드화 된 문자 세트 - > 진
(B) 왜 왜곡입니까?
1 , 디코딩 및 실제 MT4 계정 가이드 로그인 코드 문자 세트는 균일하지
2 , 바이트가 누락, 분실 길이
(ⅲ) (감형 의해 치료) 파일 해시
IOConver 패키지;
수입 java.io.UnsupportedEncodingException;
공용 클래스 Demo01 {
공공 정적 무효 메인 (문자열 []에 args) {
test01 ();
에서 System.out.println ( "-----------");
test02 ();
}
// 코드화 된 문자 세트를 디코딩하면 동일한 문자 집합이어야합니다
공공 정적 무효 test01 ()
{
// 디코딩 바이트 -> 문자
문자열 STR = " 중국어 "; // UTF-8
// 코딩 문자를 -> 바이트
바이트 []의 데이터 = str.getBytes ();
// 문자 세트 인코딩 및 디코딩 화합
에서 System.out.println (새로운 String (데이터));
{시도
데이터의 str.getBytes = ( "GBK") ; // 세트 코드 문자 세트 인코딩
// 하지 통일 문자 집합, 왜곡
에서 System.out.println (새로운 String (데이터)) ; // 디코딩
} 캐치 (예외 : UnsupportedEncodingException 전자) {
e.printStackTrace ();
}
[] DATA2를 바이트;
{시도
// 코딩
DATA2 = " 中国".getBytes ( "GBK");
// 디코딩
STR = 새로운 문자열 (데이터 2, "GBK");
// str을 = 새로운 문자열 (데이터 2) ; // 기본 디코딩을 지정하지 UTF-8 왜곡을
에서 System.out.println (새 문자열 (STR));
} 캐치 (예외 : UnsupportedEncodingException 전자) {
e.printStackTrace ();
}
}
// 바이트 누락, 누락 길이
공공 정적 무효 test02 () {
문자열 STR = " 중국어 ";
[] 데이터 바이트;
데이터 = str.getBytes (); // 부호화
// 바이트 수는 완전하지 않습니다
에서 System.out.println (새로운 String (데이터, 0,4));
}
}
결과 :
й
중국
-----------
에
IOConver 패키지;
수입 java.io.BufferedReader의;
수입 java.io.BufferedWriter;
수입 java.io.File에;
수입 java.io.FileInputStream의;
수입 java.io.FileOutputStream의;
수입 때 java.io.IOException;
수입 java.io.InputStreamReader;
수입 java.io.OutputStreamWriter;
/ **
* 전환 스트림 : 바이트 문자로
* 1 출력 스트림 의 OutputStreamWriter의 부호화
* 2 , 입력 스트림 InputStreamReader의 디코딩
* /
공용 클래스 Demo02 {
공공 정적 무효 메인 (문자열 []에 args) {IOException가 슬로우
// 입력 파일 복호화 ( 문자에 바이트 ) 표시 할 읽어
// 디코딩 문자 세트를 지정 의 BufferedReader 문자 스트림을 --InputStreamReader 감형는 --FileInputStream 바이트 스트림
의 BufferedReader BR = 새로운 BufferedReader로
(
새로운 InputStreamReader
(
새로운 FileInputStream에 (새로운 파일 ( "g : /writer.txt")), "UTF-8"
)
) // 문자 세트를 지정 복호
// 파일 인코딩을 쓰기 (문자로 바이트)
의 BufferedWriter BW = 새로운 BufferedWriter의
(
새의 OutputStreamWriter
(
새로운 FileOutputStream에 (새로운 파일 ( "G : /try/abdec.txt")), "UTF-8"
)
);
문자열 정보 = NULL;
(NULL! = (정보 = br.readLine ())) 동안
{
에서 System.out.println (정보);
bw.write (정보 + "\ 연구 \ n");
}
bw.flush ();
bw.close ();
br.close ();
}
}
결과 :
모든 사람은 자신의 젊음을 가지고
각 청소년는 이야기가 있습니다
각각의 이야기는 후회를 가지고,
불행하게도, 그의 멋진의 각 아무것도 없다. ouye
----------------
원본 링크 : https://blog.csdn.net/scgaliguodong123_/article/details/45932481