자바 프로 그래 밍 의 IO 흐름 자료 상세 정리
자바 흐름 작업 과 관련 된 클래스 나 인터페이스:
Java 흐름 도표 구조:
흐름 의 개념 과 역할
흐름 은 순서 가 있 고 출발점 과 종점 이 있 는 바이트 집합 으로 데이터 전송 에 대한 총칭 이나 추상 이다.즉,데이터 가 두 장치 간 의 전송 을 흐름 이 라 고 하 는데 흐름 의 본질은 데이터 전송 이다.데이터 전송 특성 에 따라 흐름 을 각 종류 로 추상 화하 여 더욱 직관 적 으로 데이터 조작 을 할 수 있다.
IO 흐름 의 분류
4.567917.처리 데이터 유형 에 따라 문자 흐름 과 바이트 흐름 으로 나 뉜 다데이터 흐름 에 따라 입력 흐름 과 출력 흐름 으로 나 뉜 다 문자 흐름 과 바이트 흐름
문자 흐름 의 유래:데이터 인 코딩 이 다 르 기 때문에 문 자 를 효율적으로 조작 하 는 흐름 대상 이 생 겼 다.본질은 바이트 흐름 을 바탕 으로 읽 을 때 지정 한 코드 표를 찾 아 보 는 것 이다.바이트 흐름 과 문자 흐름 의 차이 점:
4.567917.읽 기와 쓰기 단 위 는 다르다.바이트 흐름 은 바이트(8bit)단위 이 고 문자 흐름 은 문자 단위 이 며 메타 맵 문자 에 따라 한 번 에 여러 개의 바이트 를 읽 을 수 있다4.567917.처리 대상 이 다 릅 니 다.바이트 흐름 은 모든 유형의 데이터(예 를 들 어 그림,avi 등)를 처리 할 수 있 고 문자 흐름 은 문자 형식의 데이터 만 처리 할 수 있 습 니 다결론:순수한 텍스트 데 이 터 를 처리 하 는 것 이 라면 문자 흐름 을 우선적으로 고려 해 야 한다.이외에 모두 바이트 흐름 을 사용 합 니 다.
입력 흐름 과 출력 흐름
입력 흐름 에 대해 서 는 읽 기 작업 만 할 수 있 고 출력 흐름 에 대해 서 는 쓰기 작업 만 할 수 있 으 며 프로그램 에 서 는 전송 할 데이터 의 특성 에 따라 서로 다른 흐름 을 사용 해 야 합 니 다.
Java IO 스 트림 대상
1.바이트 흐름 입력 InputStreamIO 에서 바이트 흐름 을 입력 한 계승 그림 은 위의 그림 을 볼 수 있 습 니 다.
OutputStream 은 모든 출력 바이트 흐름 의 부모 클래스 로 추상 적 인 클래스 입 니 다.ByteArray OutputStream,FileOutputStream 은 두 가지 기본 적 인 미디어 흐름 으로 각각 Byte 배열 과 로 컬 파일 에 데 이 터 를 기록 합 니 다.Piped OutputStream 은 다른 스 레 드 와 함께 사용 하 는 파이프 에 데 이 터 를 기록 합 니 다.Object OutputStream 과 모든 FilterOutputStream 의 하위 클래스 는 장식 흐름 입 니 다. 3.바이트 흐름 의 입력 과 출력의 대응
그림 에서 파란색 은 주요 대응 부분 이 고 빨간색 부분 은 대응 하지 않 는 부분 이다.자줏빛 점선 부분 은 이런 흐름 을 대표 하여 일반적으로 배합 하여 사용 해 야 한다.위의 그림 에서 보 듯 자바 IO 의 바이트 흐름 은 극히 대칭 적 이다.'존재 와 합 리 성'이 바이트 흐름 에서 대칭 적 이지 않 은 몇 가지 유형 을 살 펴 보 자!
1.LineNumberInputStream 은 주로 흐름 에서 데 이 터 를 읽 을 때 해당 하 는 줄 번 호 를 얻 을 수 있 습 니 다.언제 줄 을 나 누고 어디 에 줄 을 나 누 는 지 는 개 류 에 의 해 주동 적 으로 확 정 된 것 이지 원래 줄 번호 가 있 는 것 이 아 닙 니 다.출력 부분 에 대응 하 는 부분 이 없 는 부분 에 서 는 LineNumberOutputStream 을 만 들 수 있 습 니 다.처음에 기록 할 때 기준 적 인 줄 번호 가 있 습 니 다.나중에 줄 이 바 뀔 때마다 다음 줄 에 줄 번 호 를 추가 하 는 것 도 가능 할 것 같 습 니 다.더 안 들 어 가 는 것 같 애.
2.Pushback InputStream 의 기능 은 마지막 바 이 트 를 보고 마음 에 들 지 않 으 면 버퍼 에 넣 는 것 입 니 다.주로 컴 파 일 러 의 문법,문법 분석 부분 에 쓰 인 다.출력 부분의 Buffered OutputStream 은 거의 비슷 한 기능 을 실현 한다.
3.StringBufferInputStream 은 Deprecated 되 었 고 그 자체 가 InputStream 부분 에 나타 나 지 말 아야 합 니 다.주로 String 은 문자 흐름 의 범위 에 속 해 야 하기 때 문 입 니 다.이미 폐기 되 었 습 니 다.물론 출력 부분 도 필요 없습니다!버 전의 아래 호 환 을 유지 하기 위해 서 만 존재 할 수 있 습 니 다.
4.Sequence InputStream 은 하나의 도구 클래스 로 볼 수 있 으 며,두 개 이상 의 입력 흐름 을 하나의 입력 흐름 으로 순서대로 읽 을 수 있 습 니 다.IO 가방 에서 완전히 제거 할 수 있 고 IO 가방 의 구조 에 전혀 영향 을 주지 않 지만 더욱'순결'한 DD 순결 한 Decorator 모델 을 만 들 수 있 습 니 다.
5.PrintStream 도 보조 도구 라 고 볼 수 있다.주로 다른 출력 흐름 이나 FileInputStream 에 데 이 터 를 기록 할 수 있 으 며,내부 구현 은 버퍼 가 있 습 니 다.본질 적 으로 다른 흐름 을 종합 적 으로 운용 하 는 도구 일 뿐이다.똑 같이 IO 가방 을 찰 수 있어 요!System.out 과 System.out 이 PrintStream 의 인 스 턴 스 입 니 다!
4.문자 입력 스 트림 리더
위의 상속 관계 도 에서 볼 수 있다.
1.Reader 는 모든 입력 문자 흐름 의 부모 클래스 로 추상 적 인 클래스 입 니 다.
2.CharReader,StringReader 는 두 가지 기본 적 인 미디어 흐름 으로 각각 Char 배열,String 에서 데 이 터 를 읽 습 니 다.PipedReader 는 다른 스 레 드 와 공유 하 는 파이프 에서 데 이 터 를 읽 습 니 다.
3.Buffered Reader 는 분명히 하나의 장식 기 이 고 그 하위 클래스 와 다른 Reader 대상 을 장식 하 는 것 을 책임 집 니 다.
4.FilterReader 는 구체 적 인 장식 흐름 을 사용자 정의 하 는 모든 부모 클래스 로 하위 클래스 인 PushbackReader 가 Reader 대상 을 장식 하면 줄 번호 가 추 가 됩 니 다.
5.InputStreamReader 는 바이트 흐름 과 문자 흐름 을 연결 하 는 다리 로 바이트 흐름 을 문자 흐름 으로 바 꿉 니 다.FileReader 는 이 기능 을 달성 하고 자주 사용 하 는 도구 류 라 고 할 수 있 으 며,소스 코드 에서 FileInputStream 을 Reader 로 바 꾸 는 방법 을 뚜렷하게 사용 했다.우 리 는 이런 종류 에서 일정한 기 교 를 얻 을 수 있다.Reader 의 각 종류의 용도 와 사용 방법 은 기본적으로 InputStream 의 클래스 와 일치 합 니 다.뒤에 Reader 와 InputStream 의 대응 관계 가 있 습 니 다. 5.문자 출력 스 트림 라이터
위의 관계 도 에서 볼 수 있다.
1.Writer 는 모든 출력 문자 흐름 의 부모 클래스 로 추상 적 인 클래스 입 니 다.
2.CharArray Writer,StringWriter 는 두 가지 기본 적 인 미디어 흐름 으로 각각 Char 배열,String 에 데 이 터 를 기록 합 니 다.Piped Writer 는 다른 스 레 드 와 공유 하 는 파이프 에 데 이 터 를 기록 합 니 다.
3.Buffered Writer 는 Writer 에 버퍼 기능 을 제공 하 는 장식 기 입 니 다.
4.PrintWriter 와 PrintStream 은 매우 유사 하고 기능 과 사용 도 매우 비슷 하 다.
5.OutputStreamWriter 는 OutputStream 에서 Writer 로 전환 하 는 다리 로 그의 하위 클래스 인 FileWriter 는 사실은 이 기능 을 실현 하 는 구체 적 인 유형(구체 적 으로 SourceCode 를 연구 할 수 있다)이다.기능 과 사용 은 OutputStream 과 매우 유사 하 며,뒤에 대응 하 는 그림 이 있 을 것 이다. 6.문자 흐름 의 입력 과 출력의 대응
7.문자 흐름 과 바이트 흐름 변환
전환 흐름 의 특징:
4.567917.문자 흐름 과 바이트 흐름 사이 의 교량 이다읽 은 바이트 데 이 터 를 지정 한 인 코딩 을 통 해 문자 로 변환 할 수 있 습 니 다읽 은 문자 데 이 터 를 지정 한 인 코딩 을 통 해 바이트 로 변환 할 수 있 습 니 다전환 흐름 은 언제 사용 합 니까?
8.File 클래스
File 클래스 는 파일 시스템 의 파일 과 폴 더 를 봉인 하 는 대상 으로 대상 의 사상 을 통 해 파일 과 폴 더 를 조작 할 수 있 습 니 다.File 류 는 파일 이나 디 렉 터 리 의 각종 메타 데이터 정 보 를 저장 합 니 다.파일 이름,파일 길이,마지막 수정 시간,읽 을 수 있 는 지,현재 파일 의 경로 이름 을 가 져 올 지,지정 한 파일 이 존재 하 는 지,현재 디 렉 터 리 의 파일 목록 을 가 져 올 지,파일 과 디 렉 터 리 를 만 들 거나 삭제 하 는 등 방법 을 포함 합 니 다.
9.RandomAccessFile 클래스
이 대상 은 스 트림 시스템 의 일원 이 아 닙 니 다.바이트 스 트림 을 패키지 하 는 동시에 버퍼(문자 배열)를 패키지 하여 내부 지침 을 통 해 문자 배열 의 데 이 터 를 조작 합 니 다.대상 특징:
이 대상 은 파일 만 조작 할 수 있 기 때문에 구조 함 수 는 두 가지 유형의 인 자 를 받 습 니 다.a.문자열 파일 경로;b.File 대상.이 대상 은 파일 을 읽 기 작업 도 할 수 있 고 쓰기 작업 도 할 수 있 으 며 대상 을 예화 할 때 작업 모드(r,rw)를 지정 할 수 있 습 니 다.
메모:이 대상 이 실례 화 될 때 작업 할 파일 이 존재 하지 않 으 면 자동 으로 생 성 됩 니 다.파일 이 존재 하면 데이터 가 지정 되 지 않 은 위 치 를 쓰 면 처음부터 쓰기 시작 합 니 다.즉,원래 의 내용 을 덮어 씁 니 다.다 중 스 레 드 다운로드 나 여러 스 레 드 에서 파일 에 데 이 터 를 동시에 쓸 수 있 습 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.