2023. 5. 30. 20:46ㆍLanguages/JAVA
💬 기억하고 싶거나 공부한 내용을 기록중입니다 :) 개인적으로 기억하고 싶은 내용들을 적어두고 있습니다.
💬 오늘의 기록은 예시 위주로 작성합니다 :)
1️⃣ 입출력 스트림
1. 바이트 기반 스트림
1) (출력)OutputStream
OutputStream os = new FileOutputStream("C:\\java\\1.txt");
2) (입력)InputStream
InputStream os = new FileInputStream("C:\\java\\1.txt");
- read()메소드 : 읽을 수 없다면, -1을 리턴
2. 문자 기반 스트림
1) (출력)Writer
Writer writer = new FileWriter("C:\\java\\1.txt");
2) (입력)Reader
Reader reader = new FileReader("C:\\java\\1.txt");
2️⃣ 보조스트림
1. 이해하기
- 형태 : 보조스트림 변수 = new 보조스트림(연결스트림)
- 보조 스트림은 연속적으로 연결할 수 있다. (하단 예시)
FileInputStream fis = new FileInputStream("C:\\java\\1.txt");
InputStreamer isr = new InputStreamReader(fis);
FileReader rd = new FileReader(isr);
- 순서도 : 입력 스트림 - 보조스트림 -> 프로그램 -> 보조스트림 - 출력 스트림
2. 기본 타입(primitive type) 입출력 보조 스트림
1) 출력(예시)
FileOutputStream fos = new FileOutputStream("C:\\java\\1.txt");
DataOutputStream dos = new DataOutputStream(fos);
2) 입력(예시)
FileInputStream fis = new FileInputStream("C:\\java\\1.txt");
DataInputStream dis = new DataInputStream(fis);
3) 특이사항
출력시스템으로 출력한 데이터가 있다. 이 데이터를 입력시스템으로 읽어올 때는, 출력한 순서와 같은 순서로 읽어야 한다.
3. 성능 향상 프로그램(buffer)
- 프로그램과 입출력 사이에서 buffer가 작업하는데, 버퍼에 데이터가 쌓였다가 꽉 차면 한번에 보냄으로 출력 횟수 줄여줌
1) 출력 (예시)
FileOutputStream fos = new FileOutputStream("C:\\java\\1.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
2) 입력 (예시)
FileInputStream fis = new FileInputStream("C:\\java\\1.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
✔참고
Reader reader = new FileReader(~~~.class.getRescource("1.txt").getPath());
BufferedReader br = new BufferedReader(reader);
while(true){
String str = br.readLine(); // 라인 단위 문자열이라 readLine, 보통 read
if(str == null) break; // String타입이라 null로 표시, data로 받았다면 보통 -1
System.out.println(str);
}
br.close();
4. 객체 입출력 보조 스트림(★)
1) 이해하기
- 직렬화: 객체를 바이트 배열로 만드는 것 / 역질렬화 : 바이트 배열을 객체로 만드는 것
- 순서
바이트 > InputStream > ObjectInputStream(역직렬화) > 프로그램 > ObjectOutputStream(직렬화) > OutputStream > 바이트
- 자바에서 java.io.Serializable 인터페이스(주의: 메소드 선언이 없음)를 구현한 객체만 직렬화함,
객체를 파일로 저장 또는 네트워크로 전송할 목적이라면, 클래스 선언시 implements Serializable 추가해야 함
2) 출력(예시)
FileInputStream fis = new FileInputStream("C:\\javaStudy\\practice\\\\guitar.txt");
ObjectInputStream is = new ObjectInputStream(fis);
List<Guitar> guitarList = (List<Guitar>) is.readObject();
return guitarList;
3) 입력(예시)
FileOutputStream fos = new FileOutputStream("C:\\javaStudy\\practice\\guitar.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(guitarList);
oos.flush();
oos.close();
'Languages > JAVA' 카테고리의 다른 글
| [JAVA] 간단한 Predicate<T> (0) | 2024.03.31 |
|---|---|
| [JAVA] Stream (0) | 2024.01.24 |
| [JAVA] 인터페이스, 컬렉션 프레임워크, 스레드 (0) | 2023.05.26 |
| [JAVA] 컬렉션 프레임워크 (0) | 2023.05.22 |
| [JAVA] 클래스(강제 형변환) (0) | 2023.05.18 |