*문자열 보조스트림
OutputStreamWriter & InputStreamReader
: 바이트기반 스트림의 데이터를 지정된 인코딩의 문자 데이터로 변환하는 작업 진행
: 생성자로 넣어진 문자형식으로 인코딩하여 저장할 수 있다.
: InputStream과 OutputStream클래스는 바이트 단위의 읽기과 쓰기에 사용되는 클래스 이기 때문에
이들은 문자열을 읽을 수 없다, 그렇기 때문에 이 바이트단위의 파일을 Characters타입(char/String_Characters취급됨)으로
읽고 쓰려면(저장) byte단위로 데이터를 읽고 이를 chararacter타입으로 변환할 수 있도록 도와주는 것이
---> OutputStreamWriter/InputStreamReader
1. OuputStreamWriter
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName) , "utf-8")
: FileOutputStream을 통해 저장한(써낸) fieName이라는 파일을 바이트 타입으로 저장할 때,
utf-8 형식의 데이터로 인코딩해서 저장
* 참고 : FileOutputStream -> 그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 데이터를 바이트형태로 파일에 저장
---- hi.txt ----------> (FileOutputStream) -----------------------> osw -----------------------> 저장
(텍스트 파일) -------> 바이트 타입 ---------> 원하는 형태의 문자집합으로 인코딩 ---> 저장
2. InputStreamReader
바이트 기반의 스트림을 문자기반 스트림으로 읽어내는 보조스트림
InputStreamReader isr = new InputStreamReader(new FileInputStream(fileName) , "ms949")
: FileInputStream을 통해서 저장되어있던 바이트 타입의 다양한 파일들을 읽어내는데,
이 때 이 파일들을 ms949형태의 데이터 타입으로 인코딩
* 참고 : FileInputStream -> 그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 파일들을 읽어낸다.
---- hi.txt ----------> (FileInputStream) ---------------------------> isr -----------------------> 출력
(텍스트 파일) -------> 바이트 타입 ---------> 원하는 형태의 문자집합으로 인코딩 ---> 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
package com.kh.filter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
//InputStreamReader : InputStream -> Reader
//OutptStreamWriter : OutputStream -> Writer
public class C_StreamWR {
Scanner sc = new Scanner(System.in);
public void writerWithStream() {
System.out.println("파일명을 작성하세요 : ");
String fileName = sc.nextLine();
System.out.println("문구를 작성하세요 : ");
String contents = sc.nextLine();
//OutputStreamWriter
//OutputStream과 이걸 상속받는 모든 메소드들에서 사용가능
try(OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(fileName) , "utf-8")) { // (new 기반스트림())-> 기반스트림을 생성자의 매개변수에 넣기(API가 시키는대로)
osw.write(contents);
System.out.println("파일 생성이 완료되었습니다. 프로젝트를 새로고침하세요.");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//InputStreamReader
public void readerWithWStream() {
System.out.println("읽어올 파일명을 작성해주세요 : ");
String fileName = sc.nextLine();
try(InputStreamReader isr = new InputStreamReader(new FileInputStream(fileName) , "ms949")){
int check = 0;
String res = "";
while((check = isr.read()) != -1) {
res += (char)check;
}
System.out.println(res);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
cs |
'BackEnd > Java' 카테고리의 다른 글
JAVA ] 변수선언 (0) | 2020.11.10 |
---|---|
JAVA 기본적인 코드 다루기 (0) | 2020.11.10 |
IO_FileWriter & FileReader (0) | 2020.11.10 |
IO_ ObjectInputStream & ObjectOutputStream (0) | 2020.11.01 |
IO_BufferedInputStream & BufferedOutputStream (0) | 2020.10.31 |
댓글