IO 스트림의 기본 개념
IO 스트림은 장치 간의 데이터 전송을 처리하는 데 사용됩니다.
Java는 스트림을 통해 데이터를 운영합니다
Java가 스트림 작동에 사용하는 객체는 IO 패킷의 두 가지 유형의 스트림으로 나뉩니다 : 바이트 스트림 및 문자 스트림 : 입력 스트림 및 출력 스트림.
바이트 스트림의 초록 기본 클래스 : 입력 스트림, 출력 스트림
캐릭터 스트림에 대한 추상 기본 클래스 : 독자, 작가
참고 :이 4 개의 클래스에서 파생 된 서브 클래스 이름은 모두 부모 클래스 이름을 가진 서브 클래스 이름의 접미사입니다.
예를 들면 : 입력 스트림의 서브 클래스 : fileInputStream
예를 들어 : 독자 Filereader의 서브 클래스
filewriter 객체를 작성하면 객체가 초기화되면 조작 할 파일을 명확하게 정의해야하며 파일은 지정된 디렉토리로 작성됩니다. 디렉토리에 동일한 이름이있는 파일이 있으면 덮어 씁니다.
데모:
패키지 javase.day18; import java.io.filewriter; import java.io.ioexception; 공개 클래스 filewriterdemo {public static void main (String [] args) {filewriter fw = null; try {fw = new filewriter ( "C : //java_test//filewritertest.txt"); // 쓰기 메소드를 호출하고 스트림 fw.write ( "Alex Test23")에 문자열을 씁니다. // 스트림 객체의 버퍼의 데이터를 Fw.flush (); } catch (ioexception e) {e.printstacktrace (); } 마침내 {try {if (fw! = null) {// 스트림 자원을 닫지 만 내부 버퍼는 fw.close ()를 닫기 전에 한 번 새로 고쳐집니다. }}} catch (ioexception e) {e.printstacktrace (); }}}} 패키지 javase.day18; import java.io.filewriter; import java.io.ioexception; 공개 클래스 filewriterdemo {public static void main (String [] args) {filewriter fw = null; try {fw = new filewriter ( "C : //java_test//filewritertest.txt"); // 쓰기 메소드를 호출하여 스트림 fw.write에 문자열을 씁니다 ( "Alex Test23"); // 스트림 객체의 버퍼의 데이터를 Fw.flush (); } catch (ioexception e) {e.printstacktrace (); } 마침내 {try {if (fw! = null) {// 스트림 자원을 닫지 만 내부 버퍼의 데이터는 fw.close ()를 닫기 전에 한 번 새로 고침됩니다. }}} catch (ioexception e) {e.printstacktrace (); }}}}Java 파일 데모 코드의 소스 코드 인쇄 :
패키지 javase.day18; import java.io.filereader; import java.io.ioexception; public class filereadertest {public static void main (string [] args) {try {filereader fr = new Filereader ( "C : //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while (num = fr.read (buf))! = -1) {System.out.println (새 문자열 (buf, 0, num)); }} catch (ioexception e) {e.printstacktrace (); }}} 패키지 javase.day18; import java.io.filereader; import java.io.ioexception; public class filereadertest {public static void main (string [] args) {try {filereader fr = new Filereader ( "C : //java_test//systemdemo.java"); char [] buf = new char [1024]; int num = 0; while (num = fr.read (buf))! = -1) {System.out.println (새 문자열 (buf, 0, num)); }} catch (ioexception e) {e.printstacktrace (); }}} 파일 데모 코드 복사 :
Copy_1 ()에 사용되는 방법은 캐릭터를 읽고 문자를 쓰는 것입니다.
Copy_2 ()에서 사용하는 방법은 문자를 문자 배열로 한 번에 읽고 마지막으로 대상 파일에 다시 쓰는 것입니다.
패키지 javase.day18; import java.io.filereader; import java.io.filewriter; import java.io.ioexception; 공개 클래스 CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioexception e) {e.printstacktrace (); }} public static void copy_1 ()는 ioexception {filewriter fw = new filewriter ( "c : //java_test//copy_systemdemo.java"); filereader fr = new Filereader ( "c : //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! = -1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 ()는 ioexception을 던지려고 {filewriter fw = new filewriter ( "c : //java_test//copy_systemdemo.java"); filereader fr = new Filereader ( "c : //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! = -1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} 패키지 javase.day18; import java.io.filereader; import java.io.filewriter; import java.io.ioexception; 공개 클래스 CopyText {public static void main (String [] args) {try {copy_1 (); } catch (ioexception e) {e.printstacktrace (); }} public static void copy_1 ()는 ioexception {filewriter fw = new filewriter ( "c : //java_test//copy_systemdemo.java"); filereader fr = new Filereader ( "c : //java_test//systemdemo.java"); int num = 0; while ((num = fr.read ())! = -1) {fw.write (num); } fw.close (); fr.close (); } public static void copy_2 ()는 ioexception을 던지려고 {filewriter fw = new filewriter ( "c : //java_test//copy_systemdemo.java"); filereader fr = new Filereader ( "c : //java_test//systemdemo.java"); int num = 0; char [] buf = new char [1024]; while ((num = fr.read (buf))! = -1) {fw.write (buf, 0, num); } fw.close (); fr.close (); }} 문자 스트림에 대한 버퍼 :
버퍼의 출현은 데이터의 읽기 및 쓰기 효율을 향상시킵니다.
해당 클래스 : BufferedWriter, BufferedReader.
버퍼는 사용하기 전에 스트림과 결합되어야합니다.
흐름의 기능은 흐름에 따라 향상됩니다.
IO 스트림 작동의 기본 규칙 :
1. 소스와 목적을 지우십시오.
출처 : 입력 스트림, 리더
목적 : outputstream, 작가
2. 작업 데이터가 일반 텍스트인지 여부 :
예 : 문자 스트림 아니요 : 바이트 스트림은 : (1) 입력 문자 스트림에 리더를 사용할 때
(2) 입력 바이트 스트림에 입력 스트림을 사용하십시오
(3) 작가를 출력 문자 스트림에 사용하십시오
(4) 출력 바이트 스트림에 출력 스트림을 사용할 때
3. 시스템이 명확 해지면 사용할 특정 객체를 명확히하십시오.
소스 장치 : 메모리, 하드 디스크, 키보드 대상 장치 : 메모리, 하드 디스크, 콘솔
IO 작동 도구 클래스
[1] String filereaderstringhandle (String filename)
파일 (파일 이름으로 지정)을 문자열로 읽으십시오.
[2] 바이트 [] FilereaderBytehandle (String filename)
파일 (파일 이름으로 지정)을 바이트 배열로 읽으십시오.
[3] void filewriterHandle (문자열 파일 이름, 문자열 텍스트)
문자열 (텍스트별로 지정 됨)을 파일 (파일 이름으로 지정 됨)에 씁니다.
ioutil.java
import java.io.bufferedInputStream; import java.io.bufferedReader; import java.io.file; import java.io.fileInputStream; import java.io.filereader import java.io.io.ioexception; public class Ioutil { /** ** ** ** ** ** ** ** ** ** ***는 파일을 읽습니다. filereader+bufferedReader (Readline 메소드 제공) * * @param filename * @return String */ public static string filereaderstringhandle (String filename) {StringBuilder sb = new StringBuilder (); try {bufferedReader in = new bufferedReader (new FilerEader (new File (filename) .getAbsoluteFile ())); {문자열 s; while ((s = in.readline ())! = null) {sb.append (s); sb.append ( "/n"); }} 마침내 {in.close (); }} catch (ioexception e) {throw new runtimeexception (e); } return sb.toString (); } / ** * 파일을 사용하여 바이트로 파일을 처리하기 위해 파일 * @param filename * @return byte [] * / public static byte [] filereaderByteHandle (String filename) {byte [] data = null; {bufferedInputStream bf = new bufferedInputStream (new FileInputStream (filename)); try {data = new Byte [bf.available ()]; bf.read (데이터); } 마침내 {bf.close (); }} catch (ioexception e) {throw new runtimeexception (e); } return data == null? 새로운 바이트 [] {} : 데이터; } / ** * 지정된 텍스트를 filename * * @param filename * @param text * / public static void filewriterHandle (String Filename, String Text) {try {printwriter out = new PrintWriter (filename (filename) .getAbsoluteFile ())에 작성하십시오. try {out.print (텍스트); } 마침내 {out.close (); }} catch (ioexception e) {throw new runtimeexception (e); }} public static void main (String [] args)은 ioexception {system.out.print (filereaderstringhandle ( "src/ioutil.java")); for (byte b : filereaderBytehandle ( "src/ioutil.java")) system.out.print (b); filewriterHandle ( "zj.txt", filereaderstringhandle ( "src/ioutil.java"); }}