마트철수

[042] JAVA 마지막: 데이터 입출력 본문

KB IT's Your Life/교육

[042] JAVA 마지막: 데이터 입출력

마트스 2024. 7. 8. 16:56

 
2024.07.08(월)
 
JAVA 13일차
 
클래스는 필드, 생성자, 메서드 → #필생메
상속은 메소드 오버라이딩,  다형성, 추상 → #메오다추
문자열은 String 타입 → substring, indexOf, split
main 메소드(혹은 생성자) 안에 위치하면 → 로컬 클래스
 


 

ch18 데이터 입출력

 
문자 입출력 스트림
 
문자 출력
: write(int c), write(char[ ] cbuf), write(char[ ] cbuf, int off, int len)
: wrute(STring str)
 
#String을 char 배열로 바꾸려면? .toCharArray( );
 
바이트 배열로 읽기
: read(byte[ ] b) 메소드
# 상속 관련 - 오버라이딩 / 이름만 다르면 - 오버로드
 
Reader
: 문자 입력 스트림이 기본적으로 가져야 할 메소드 정의
: reader = new FileReader("C:/ ..."); → 파일이 없으면, FileNotFoundException 오류
 
# 1 문자씩 읽는 것보다 배열로 읽는 게 더 빠름
# 1 줄씩 읽는 기능은 본래 없음
 
보조 스트림
: 다른 스트림과 연결되어 여러 편리한 기능을 제공해주는 스트림
: 디폴트 생성자가 없음 !
생성 방법: 보조스트림 변수 = new 보조스트림(입출력스트림); ... 입출력스트림은 원본

> Buffered, Object 붙은 보조스트림이 중요
 
InputStream을 Reader로 변환
InputStream is = new FileInputStream("C:/...);
Reader reader = new InputStreamReader(is)
#file에 대해서는 FileReader( );
 
OutputStream을 Writer로 변환
OutputStream os = new FileOutStream("C:/ ..);
Reader reader = new InputStreamReader(is);
 
성능 향상 스트림
 
메모리 버퍼로 실행 성능을 높이는 보조 스트림
: 프로그램이 중간에 메모리 버퍼와 작업해서 실행 성능 향상 가능
 
기본 타입 스트림
: 바이트 스트림에만 연결 가능
dos.writeUTF("홍길동") → String name = dis.readUTF( ); ... 입력한 순서대로 받아야함
 
객체 스트림
- 직렬화: 메모리에 생성된 객체를 바이트로 변경 ... oos.wruteObject(객체);
- 역직렬화: 직렬화된 바이트를 객체의 필드값으로 복원 ... 객체타입 변수 = 객체타입)ois.readObject( );
- public class 00 implements Serializable 로 인터페이스를 만들어줘야함
 
# 객체와 byte 배열을 왔다갔다
# 호환성은 없음 (상대방도 JAVA여야 가능)
 
Serializable 인터페이스
: 멤버가 없는 빈 인터페이스이지만, 객체 직렬화할 수 있다고 표시
: static(정적), transient는 직렬화에서 제외
 
serialVersionID 필드
: 클래스는 동일해야함
: 내용이 다르더라도 동일한 serialVersionID 상수값을 가지면 역직렬화 가능
 
#BufferedXxx, ObjectStream 아주 중요함!
 
File과 Files 클래스
- File 클래스: File 객체를 생성

문자열이기만 하면 됨 / 존재여부가 중요하지 않음

 
# new File(Parent File, 파일명)으로 지정 가능
# mkdir( );는 makedirectory의 약어 → mkdirs( ) = 경로상에 없는 모든 디렉토리를 생성
 
디렉토리와 파일: 
 
● 디렉토리(Directory):
다른 파일이나 디렉토리를 포함할 수 있는 구조. 폴더라고도 불리며, 계층적인 파일 시스템을 구성합니다.
● 파일(File):
데이터를 저장하는 기본 단위. 텍스트, 이미지 등 특정 정보를 담고 있으며, 디렉토리 안에 위치할 수 있습니다.
 
 
● composite 패턴:
그릇(디렉토리), 내용물(내용)을 동일시 처리
 
 
● 노트북 동일한 환경 구축하기
MySQL :: Download MySQL Community Server

 

실습

 
# stream 들어가면 모두 byte 
 
- 문자 입출력 스트림의 write -> 모두 오버로딩
- flush( ) 비어내기, close( ) 닫기
 
▼ IOException 예외 처리(필수)

}catch(IOException e){
   e.printStackTrace();