자바 IO의 처리 스트림

첫째, 프로세스 흐름 :

향상된 성능을 제공하는 스트림 노드.

노드 및 프로세스 흐름 스트림 사이 둘째, 관계

에서 노드 스트림 (바이트 스트림, 문자 스트림) 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

추천

출처www.cnblogs.com/benming/p/11791665.html