1. 입력 및 출력
1.stream은 데이터를 생성할 수 있는 모든 데이터 소스 또는 데이터를 수신할 수 있는 모든 수신 소스를 나타냅니다.
Java의 IO에서 모든 스트림(Input 및 Out 스트림 포함)에는 두 가지 유형이 포함됩니다.
1.1 바이트 중심 스트림
바이트 중심 스트림은 단어 중심 스트림을 의미합니다. 섹션. 바이트 지향 스트림에는 다음 유형이 포함됩니다.
1) 입력 스트림:
1) ByteArrayInputStream: 메모리의 버퍼를 InputStream으로 사용
2) StringBufferInputStream: String 객체를 InputStream으로 사용
3) FileInputStream: 파일 읽기 작업을 구현하기 위해 파일을 입력스트림으로 사용
4) PipedInputStream: 스레드에서 주로 사용되는 파이프 개념 구현
5) SequenceInputStream: 여러 개의 입력스트림을 하나의 입력스트림에 병합하여 사용
2) Outstream
1) ByteArrayOutputStream: 메모리의 버퍼에 정보를 저장
2) FileOutputStream: 파일에 정보를 저장
3) PipedOutputStream: 구현 스레드에서 주로 사용되는 파이프의 개념을 이해한다
4) SequenceOutputStream: 여러 OutStream을 하나의 OutStream으로 병합
1.2 유니코드 문자 지향 스트림
유니코드 문자 지향 스트림은 유니코드 문자 단위로 스트림에서 정보를 읽거나 스트림에 정보를 쓰는 것을 의미합니다. 유니코드 문자 지향 스트림에는 다음 유형이 포함됩니다.
1) 입력 스트림
1) CharArrayReader: ByteArrayInputStream에 해당
2) StringReader: StringBufferInputStream에 해당
3) FileReader: FileInputStream
에 해당 4) PipedReader: PipedInputStream
에 해당2) OutStream
1) CharArrayWrite: ByteArrayOutputStream
에 해당2) StringWrite: 해당 바이트 중심 스트림이 없습니다
3 ) FileWrite: FileOutputStream에 해당
4) PipedWrite: PipedOutputStream에 해당
문자 중심 스트림은 기본적으로 해당 바이트 중심 스트림을 갖습니다. 해당 두 클래스가 구현하는 기능은 동일하지만 작동 중 지침이 다릅니다. 예를 들어, CharArrayReader: 및 ByteArrayInputStream은 모두 메모리의 버퍼를 InputStream으로 사용합니다. 전자는 매번 메모리에서 1바이트의 정보를 읽는 반면 후자는 매번 메모리에서 한 문자를 읽는다는 점입니다.
1.3 현재 지향적이지 않은 두 스트림 간의 변환
InputStreamReader 및 OutputStreamReader: 바이트 지향 스트림을 문자 지향 스트림으로 변환합니다.
2. 스트림에 속성 추가
2.1 "스트림에 속성 추가" 역할
위에서 소개한 Java의 IO 작업용 API를 사용하면 원하는 모든 작업을 완료할 수 있습니다. 그러나 FilterInputStream 및 FilterOutStream의 하위 클래스를 통해 스트림에 속성을 추가할 수 있습니다. 다음은 이 함수의 기능을 설명하기 위한
의 예시입니다.
파일에 데이터를 쓰고 싶다면 다음과 같이 할 수 있습니다:
FileOutStream fs = new FileOutStream("test.txt");
그런 다음 생성된 fs 객체를 통해 write()를 호출할 수 있습니다. 함수는 test.txt 파일에 데이터를 씁니다. 그러나 "파일에 쓸 데이터를 먼저 메모리에 캐시한 다음 캐시에 있는 데이터를 파일에 쓰는" 기능을 구현하려는 경우 위 API 중 어느 것도 우리 요구 사항을 충족할 수 없습니다. 그러나 FilterInputStream 및 FilterOutStream의 하위 클래스를 통해 FileOutStream에 필요한 기능을 추가할 수 있습니다.
2.2 다양한 유형의 FilterInputStream
2.2.1 바이트 중심의 InputStream을 캡슐화하는 데 사용됩니다
1) DataInputStream: 스트림에서 기본 유형(int, char 등) 데이터를 읽습니다.
2) BufferedInputStream: 버퍼 사용
3) LineNumberInputStream: 입력 스트림의 라인 수를 기록한 다음 getLineNumber() 및 setLineNumber(int)를 호출할 수 있습니다
4) PushbackInputStream: 거의 사용되지 않음 , 일반적으로 컴파일러 개발에 사용됩니다
2.2.2 문자 중심의 InputStream을 캡슐화하는 데 사용됩니다
1) DataInputStream에 해당하는 클래스가 없습니다. readLine() 사용시 BufferedReader를 사용하지 않는 이상 DataInputStream을 사용하세요
2) BufferedReader: BufferedInputStream에 해당
3) LineNumberReader: LineNumberInputStream에 해당
4) PushBackReader: PushbackInputStream
에 해당 2.3 FilterOutStream 다양한 유형
2.2.3은 바이트 중심의 OutputStream을 캡슐화하는 데 사용됩니다
1) DataIOutStream: 기본 유형(int, char 등) 데이터를 스트림으로 출력합니다.
2) BufferedOutStream: 버퍼 사용
3) PRintStream: 형식화된 출력 생성
2.2.4 문자 중심 OutputStream을 캡슐화하는 데 사용됩니다
1) BufferedWrite: 해당
2) PrintWrite: 3. RandomaccessFile
1) RandomAccessFile 개체를 통해 파일에 대한 읽기 및 쓰기 작업을 완료할 수 있습니다
2) 개체를 생성할 때 열 파일의 특성을 지정할 수 있습니다: r, 읽기 전용 ;w, 쓰기만 가능; rw는 읽고 쓸 수 있음
3) 파일 내 지정된 위치로 직접 점프 가능
4. I/O 애플리케이션의 예
import java.io.*;
public class TestIO{
public static void main(String[] args)
throws IOException{
// 1. 파일에서 행 단위로 데이터를 읽습니다.
BufferedReader in =
new BufferedReader(
new FileReader("F:\nepalon\TestIO.java"));
String s, s2 = new String();
while((s = in.readLine()) != null)
s2 += s + "n";
in.close();
/ /1b. 키보드 입력 수신
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
System.out.println("행을 입력하세요:");
System.out.println(stdin.readLine());
//2. 문자열 객체에서 데이터 읽기
StringReader in2 = new StringReader(s2);
int c ;
while((c = in2.read()) != -1)
System.out.println((char)c);
in2.close();
위 내용은 Java 및 IO 흐름 내용입니다. 관련 기사를 더 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!