전환 흐름 : 출력 전환 문자 스트림
문자는 바이트 코드로 스트림에 기입. 효과 문자열 지정된 코드 테이블에 따라 바이트로 변환되는 것 인, 바이트 기록에서 바이트를 사용하여 스트림.
변환 흐름 개요
의 OutputStreamWriter : 문자 출력 스트림 - 데이터를 기록
공공의 OutputStreamWriter (OutputStream에 아웃)
공공의 OutputStreamWriter (OutputStream에 출력, 문자열 charsetName)
InputStreamReader : 문자 입력 스트림 - 읽기 자료
공공 InputStreamReader (의 InputStream에서)
공공 InputStreamReader (의 InputStream에서, 문자열 charsetName가 )
프로그램과 텍스트 파일 스톱워치가 아닌 경우, UTF-8 형식으로 txt 파일 인코딩을 만들려면 다음 변환 스트림으로 변환
com.oracle.demo01 패키지, 가져 오기 java.io.FileNotFoundException; 가져 오기 java.io.FileOutputStream의, 가져 오기 때 java.io.IOException; 가져 오기 java.io.OutputStreamWriter; 가져 오기 java.io.UnsupportedEncodingException; 공용 클래스 Demo01 { 주 무효 정적 공개 (문자열 []에 args) IOException가 {던졌습니다 대상을 취소 // ( "D : \\ \\ a.txt이 자바") FileOutputStream 또는의 FOS는 = 새로운 새로운 FileOutputStream 또는; // 감형 만들기 의 OutputStreamWriter OSW = 새의 OutputStreamWriter (FOS, "UTF- 8 "); // 쓰기 문자 osw.write (") "을 제외한 모든 특별한에 시작하는 () osw.flush; // 릴리스 자원 osw.close (); } }
패키지 com.oracle.demo01; 수입 java.io.FileInputStream의; 수입 java.io.FileNotFoundException; 수입 때 java.io.IOException; 수입 java.io.InputStreamReader; 수입 java.io.UnsupportedEncodingException; Public 클래스 Demo02 { 공공 정적 무효 메인 (문자열 []에 args) {IOException이 발생 //明确数据源 FileInputStream의 FIS = FileInputStream에 새로운 ( "D : \\ \\ a.txt이 자바를"); //创建转换流对象 InputStreamReader ISR = 새로운 InputStreamReader (FIS, "UTF-8"); INT LEN = 0; 숯 [] = CH 새로운 문자 [1024]; //开始读 동안 ((LEN = isr.read (CH)) = - 1!) { 에서 System.out.println (새로운 String (CH, 0, 렌)); } //释放资源 isr.close (); } }
a.txt이 a.txt이 동일한 파일 형식뿐만 아니라 파일의 내용을 복사
패키지 com.oracle.demo01; 수입 java.io.FileInputStream의; 수입 java.io.FileNotFoundException; 수입 java.io.FileOutputStream의; 수입 때 java.io.IOException; 수입 java.io.InputStreamReader; 수입 java.io.OutputStreamWriter; 수입 java.io.UnsupportedEncodingException; 공용 클래스 복사 { 공공 정적 무효 메인 (문자열 []에 args) 공개 IOException { // 1先明确数据源. FileInputStream의 FIS는 = 새로운 FileInputStream에 ( "D : \\ 자바 \\해서 a.txt"); // 2创建字符输入转换流. InputStreamReader ISR = 새로운 InputStreamReader (FIS, "UTF-8"); // 3明确目的地. FileOutputStream에의 FOS = FileOutputStream에 새로운 ( "D : \\ 자바 \\ aa.txt"); // 4 문자 출력 스트림 변환을 만들 OSW = 새의 OutputStreamWriter의 OutputStreamWriter (FOS "UTF-8"); //开始复制 CHAR [] = CH 새로운 문자 [1024]; INT LEN = 0; 반면 (! (= LEN isr.read (CH3)) = - 1) { osw.write (CH 0 렌); osw.flush (); } //释放资源 isr.close (); osw.close (); } }
버퍼 스트림 : 스트림을 효율적으로 쓰기를 제공하기 위해 가속
키워드 : 버퍼
두 바이트 스트림을 버퍼링 :
바이트의 입력 스트림 버퍼 : BufferedInputStream을
바이트 버퍼 출력 스트림 :의 BufferedOutputStream
com.oracle.demo02 패키지, 가져 오기 java.io.BufferedOutputStream에, 가져 오기 java.io.FileOutputStream의, 가져 오기 때 java.io.IOException; 공용 클래스 Demo01 { 공공 정적 무효 메인 (문자열 []에 args)이 IOException가 {던졌습니다 // 대상을 취소 (출력) 파일이 txt 쓴 ; = 새로운 새의 FileOutputStream ( "\\ \\ hello.txt 자바 D")의 FileOutputStream의 FOS // (바이트 버퍼의 출력 스트림에 추가) 버퍼 개체 생성 의 BufferedOutputStream 새로운 새의 BufferedOutputStream BOS = ( FOS); // 쓰기 바이트 bos.write (.getBytes ( "ABC123")); // 릴리스 자원 bos.close (); } }
위의 코드는 내가 성공으로 보이지 않았다, 마지막 실행 누가 마지막의 석방 촉구 쓰기 바이트, 최대 속도를하는 데 사용되는 버퍼를 생성 한 후 대상 파일을 취소 할 바이트 버퍼 출력 스트림입니다.
바이트의 입력 스트림 버퍼 : BufferedInputStream을
나는 내부의 파일에서 데이터를 읽어
com.oracle.demo02 패키지, 가져 오기 java.io.BufferedInputStream의, 가져 오기 java.io.FileInputStream의, 가져 오기 때 java.io.IOException; 공용 클래스 Demo02 { 공공 정적 무효 메인 (문자열 []에 args)는 IOException가 {던졌습니다 // 데이터 소스를 취소합니다 TXT 파일의 내용을 판독 (판독) FileInputStream에 새로운 새 FIS를 FileInputStream에가 = ( "D : \\ \\ hello.txt 자바"); // 바이트 스트림 입력 버퍼 작성 BufferedInputStream을 BIS = 새로운 새 BufferedInputStream을 (FIS)를; INT 0 = LEN, 그동안 ((LEN = bis.read ()) = - 1.!) { System.out.print (샤아 LEN)의; } // 방출 자원 bis.close (); } }
문자 버퍼 두 분획 :
문자 버퍼 입력 스트림 다음의 BufferedReader Eadline와는 (); 행 NULL을 반환 어떠한 터미네이터를 포함하지 않는 광고의 내용에 포함 된 텍스트 스트링을 판독하고;
문자 버퍼 출력 스트림 : BufferedWriter의 독특한 방법 개행 (); 개행
com.oracle.demo02 패키지, 가져 오기 java.io.BufferedWriter, 가져 오기 java.io.FileWriter, 가져 오기 때 java.io.IOException; 공용 클래스 Demo03 { 공공 정적 무효 메인 (문자열 []에 args)이 IOException가 {던졌습니다 // 대상을 취소 FW = 새로운 새로운 FileWriter FileWriter ( "D : \\ \\ hello.txt 자바", true로); // 문자 버퍼 출력 스트림 만들기 BufferedWriter의 새로운 새로운 BufferedWriter의, BW = (FW); // 쓰기 바이트 "(당신을 bw.write을 물론, 큰 곰 ") ;! bw.flush는 (); // 포장 , bw.newLine () 나는)"강력한 대머리 괜찮아 bw.write를 ( "; // 릴리스 자원 bw.close (); } }
패키지 com.oracle.demo02; 수입 java.io.BufferedReader의; 수입 java.io.FileReader; 수입 때 java.io.IOException; Public 클래스 Demo04 { 공공 정적 무효 메인 (문자열 []에 args) {IOException이 발생 //明确数据源 을 FileReader FR = 새을 FileReader ( "D : \\ 자바 \\ hello.txt를"); //创建字符输入缓冲流 의 BufferedReader BR = 새로운 BufferedReader의 (FR); 문자열 라인 = NULL; /*br.readLine (); 에서 System.out.println (행); 라인 = br.readLine (); 에서 System.out.println (행); 라인 = br.readLine (); 에서 System.out.println (행); * / 동안 (! (= 선 br.readLine ()) = NULL) { 에서 System.out.println (라인); } // 릴리스 자원 br.close (); } }
Eadline와 () 스트림의 마지막에있는 경우, 어떤 라인 터미네이터 포함하지 않고, 행의 내용이 포함 된 텍스트 문자열의 라인을 읽는 널 (null)