IO 스트림
Java에서 IO 스트림은 바이트 스트림과 문자 스트림의 두 가지 유형으로 나뉩니다. 이름에서 알 수 있듯이 바이트 스트림은 바이트에 따라 읽히고 쓰여지고 문자는 문자에 따라 액세스됩니다. 일반적으로 사용되는 파일 읽기는 문자 스트림이며 바이트 스트림은 네트워크 통신에 사용됩니다.
다음 그림은 Java의 IO 스트림의 전반적인 프레임 워크입니다.
바이트 스트림
Java에서 바이트 스트림은 일반적으로 스트림으로 끝납니다. 입력 바이트 스트림은 inputStream이라고하며 출력 바이트 스트림은 outputStream이라고합니다. InputStream 및 OutputStream은 입력/출력의 모든 클래스를 나타내는 슈퍼 클래스이며 추상 클래스 (Abstract)입니다.
일반적으로 사용되는 바이트 스트림은 다음과 같습니다.
1.FileInputStream/FileOutputStream2.bufferedInputStream/bufferedOutputStream3. de서 sequenceInputStream (시퀀스 스트림) 4.ObjectInputStream/ObjectOutputStream (객체 입력 및 출력 스트림) 5.PrintStream (인쇄 스트림).
캐릭터 스트림
Java에서 입력 문자 스트림은 리더로 끝나고 출력 문자 스트림은 작가로 끝납니다. 예를 들어, 우리의 공통 filereader 및 filewriter는 문자 스트림이며, Reader와 Witter는 입력/출력 문자 스트림의 슈퍼 클래스이며 추상 클래스이기도합니다.
일반적으로 사용되는 문자 스트림은 다음과 같습니다.
1.FilEREADER/FILEWRITER2.BUFFEREDREADER/BUFFEREDWRITER3.INPUTSTREMREADER/OUTPUTSTREAMWRITER (Convert Stream)
흐름을 변환합니다
변환 스트림은 바이트 스트림을 문자 스트림으로 변환하는 클래스이며 두 가지 유형이 있습니다.
・ inputStreamReader ・ outputStreamWriter
InputStreamReader는 문자 스트림 (Reader)이며 바이트 스트림 (inputStream)을 포장해야합니다.
OutputStreamwriter는 캐릭터 스트림 (Writer)이며 바이트 스트림 (outputStream)을 래핑해야합니다.
장식
포장의 목적은 원래 객체를 기반으로 새로운 기능을 추가하는 것입니다. 예를 들어, BufferedReader는 독자를 감싸서 실제로 독자 기능의 향상입니다. 원래 독자는 하나의 캐릭터와 하나의 캐릭터로만 읽을 수 있으며, 포장 후에 형성된 버퍼드 리더는 새로운 기능인 선 (readline)을 직접 읽는 기능을 갖습니다. 직관적으로 말하면, 이것은 소위 장식입니다.
디자인 모드 측면에서 이것은 일반적인 장식 모드이며 특성은 다음과 같습니다.
1. 장식적인 물체와 실제 물체는 동일한 인터페이스를 가지고 있습니다. 이러한 방식으로 클라이언트 객체는 실제 객체와 같은 방식으로 장식 객체와 상호 작용할 수 있습니다. 2. 장식 객체는 이러한 요청을 전달하기 전이나 후에 추가 기능을 추가 할 수 있습니다. 이를 통해 런타임 동안 주어진 객체의 구조를 수정하지 않고 외부에서 추가 기능을 추가 할 수 있습니다.
우리에게 해당하는 것은 BufferedReader와 Reader가 둘 다 독자라는 것입니다. 포장 후 버퍼드 리더 기능이 향상되지만 독자로서 여전히 사용할 수 있습니다 (OO의 부모 클래스 참조는 서브 클래스를 가리킬 수 있습니다).
예
바이트 스트림의 예
MP3 파일을 여러 사본으로 자르고 재결합합니다.
패키지 cn.xdian.test; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; import java.io.ioexception; import java.io.cequenceInputStream; import java.util.enumeration; problic java.util.util.void (problic void) ioexception {cutfile (); // mp3 파일 mergeflile (); // mp3 파일 병합} // mp3public static void mergeflile () mergeflile () {file dir = new 파일 ( "/home/home/home/gavinzhou/music_test"); // 폴더에서 모든 mp3 파일을 찾으십시오. 벡터 <fileInputStream> (); file [] files = dir.listfiles (); for (file file : files) {if (file.getName (). endSwith ( ". mp3"))) {vector.add (new FileInputStream (file));}} // 벡터 열거 <fileInputStream> e = vector.elements (); // 생성 sequence sequenceinputstream (/out sequence inputStream); fileoutputStream fileoutputStream = 새 FileOutputStream ( "/home/gavinzhou/conbine.mp3"); // 분할 mp3 파일 읽기 [] buf = new Byte [1024]; int 길이 = 0; fileoutputStream.close (); inputStream.close ();} // mp3public static void cutfile ()를 삭제합니다. ioexception {file file = new File ( "/home/gavinzhou/test.mp3"); 파일 = 새 파일 ( "/home/gavinzhou/music_test"); fileInputStream (file); // 파일을 읽는다 byte [] buf = new Byte [1024*1024]; int length = 0; for (int i = 0; file (dir, "part"+i+". mp3")); fileoutputStream.write (buf, 0, length); fileoutputStream.close ();} // 스트림 파일을 닫습니다.문자 스트림의 예
파일을 파일로 복사하십시오. b
PACKED CN.XIDIAN.TEST; import java.io.bufferedReader; import java.io.bufferedWriter; import java.io.file; import java.io.filereader; import java.io.filewriter; import java.io.ioexception; public static void (String io Exception) (String io Exception). = 새 파일 ( "/home/gavinzhou/a.txt"); file desfile = new 파일 ( "/home/gavinzhou/b.txt"); // 입력 스트림 버퍼링 리더 입력 생성 = 새 버퍼드 리더 (newfile) 소스 파일 및 새 파일에 쓰기 string line = null; while ((line = input.readline ())! = null) {output.write (line); output.newline ();} // 입력 및 출력 스트림 input.close (); output.close ();}}을 닫습니다.인쇄 스트림의 예
패키지 cn.xidian.test; import java.io.file; import java.io.fileoutputStream; import java.io.ioexception; import java.io.printstream;/*인쇄 스트림은 모든 유형의 데이터를 인쇄 할 수 있습니다. 데이터를 인쇄하기 전에 데이터는 문자열로 변환 된 다음*/class 동물 {문자열 이름; 문자열 색상; public 동물 (문자열 이름, 문자열 색상) {this.name = name; this.color = color;}@public string toString () {return ":"+ this.name+ "color :"+ this.color;}} public static void (public static) IoException {/* 파일 파일 = 새 파일 ( "/home/gavinzhou/a.txt"); // 인쇄 스트림 생성 인쇄 스트림 스트림 printstream = new PrintStream (파일); // 모든 정보를 파일 PrintStream.println (97)에 인쇄합니다. printstream.println (3.14); printstream.println ( 'a'); printstream.println (true); 동물 A = 새로운 동물 ( "쥐", "검은 색"); printstream.println (a); // 표준 입력 및 출력 시스템 변경 (PrintStream); // 표준 출력은 화면 시스템입니다. out.println ( "test ...."); */// 예외 로그 정보 수집. 파일 logfile = 새 파일 ( "/home/gavinzhou/test.log"); printstream logprintstream = new PrintStream (new FileoutPutStream (logfile, true)); try {int c = 4/0; // 예외 시스템 생성 ( "c ="+c); arr = rengln (rat.println); e) {e.printstacktrace (logprintstream); // 화면 대신 파일로 출력}}}}요약
위의 것은 Java의 IO 스트림 분석 및 코드 예제에 관한 것입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Java 탐색 : 스레드+IO 파일의 암호화 및 해독 된 코드 예제
Java IO 스트림 관련 지식 코드 분석
Java IO 스트림의 상세한 해석
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!