반응형
[Java 실습 #18] InputStream 재사용 (2) - ByteArray에 저장하여 사용
1. ByteArray에 저장하여 데이터를 재사용
2. 개발환경
2.1. 개발환경
2.2. 라이브러리
3. 구현
3.1. 프로젝트 구조
3.2. 파일 - 텍스트 파일
3.3. 구현 - 소스코드
4. 결과
1. ByteArray에 저장하여 데이터를 재사용
InputStream을 byte array로 변환하여 데이터를 재사용
2. 개발환경
2.1. 개발환경
MacOS M1 - macOS Monterey 12.0.1
IntelliJ IDEA 2021.2 (Community Edition)
2.2. 라이브러리
JDK 1.8
3. 구현
3.1. 프로젝트 구조
3.2. 파일 - 텍스트
[ sample-data.txt ]
1
2
3
4
5
6
7
|
package io.home.test;
public class InputStreamToByteArray {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
|
3.3. 구현 - 소스코드
[ CacheInputStreamToByteArray.java ]
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
|
package io.home.test;
import java.io.*;
import java.util.stream.Collectors;
public class CacheInputStreamToByteArray {
private static final String USER_DATA_PATH = "resource";
private static final String USER_DATA_FILE_NAME = "sample-data.txt";
private byte[] bytes;
private void readUserData() {
String filePath = "/" + USER_DATA_PATH + "/" + USER_DATA_FILE_NAME;
try (InputStream is = CacheInputStreamToByteArray.class.getResourceAsStream(filePath)) {
if (is == null) throw new RuntimeException("No data in " + filePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
for (int len = is.read(buffer); len != -1; len = is.read(buffer)) {
baos.write(buffer, 0, len);
}
baos.flush();
bytes = baos.toByteArray();
} catch (IOException ioe) {
}
}
public static void main(String[] args) {
CacheInputStreamToByteArray cacheToByteArray = new CacheInputStreamToByteArray();
cacheToByteArray.readUserData();
InputStream is1 = new ByteArrayInputStream(cacheToByteArray.bytes);
BufferedReader br1 = new BufferedReader(new InputStreamReader(is1));
String result1 = br1.lines().collect(Collectors.joining("\n"));
System.out.println(result1);
System.out.println("\n\n");
InputStream is2 = new ByteArrayInputStream(cacheToByteArray.bytes);
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
String result2 = br2.lines().collect(Collectors.joining("\n"));
System.out.println(result2);
}
}
|
4. 결과
- InputStream의 byte array로 변환하여 저장하고 해당 byte array를 재사용하는 방법
- InputStream의 데이터에 따라 caching 여부 결정 필요
반응형
'JAVA 자바 > JAVA 실습' 카테고리의 다른 글
[Java 실습 #24] 해당 class의 jar 파일 경로 추출 (0) | 2022.07.29 |
---|---|
[Java 실습 #18] InputStream 재사용 (3) - InputStream 재사용 class 활용 (0) | 2022.01.03 |
[Java 실습 #18] InputStream 재사용 (1) - mark, reset 활용 (0) | 2021.12.29 |
[Java 실습 #17] InputStream을 ByteArray로 변환 (0) | 2021.12.29 |
[Java 실습 #16] 마지막 구분자 뒤의 문자열 추출 (0) | 2021.12.26 |