티스토리 뷰
728x90
최근에 파일을 읽어 올 작업이 많았는데 그때마다 파일 읽어올 때 어떻게 해야되나 검색 하다가 그냥 stackoverflow에 나와있는 갖가지 방법들을 그냥 샘플 자바 프로젝트 하나 파서 한번씩 해봄.
추가로 어느 책에서 봤는데 자바에서 I/O만 다뤄도 책 한권이 나온다고 하던데 틈틈히 I/O 관련해서 봐야겠다..! 헷갈리지 않게!
방법이야 여러가지가 있다. I/O를 편하게 사용할 수 있게 해주는 Apache commons IO를 사용해도 더 간단하게 할 수 있는데 그건 나중에 정리한번 해봐야겠다.
src/main/java/resources 파일을 읽을 때 사용 하는 방법
기본 자바
public class FileReadUsingJava {
public static void main(String[] args) throws Exception {
URL resource = FileReadUsingJava.class.getClassLoader().getResource("test.txt");
List<String> strings = Files.readAllLines(Paths.get(resource.toURI()));
strings.forEach(System.out::println);
//InputStream
InputStream inputStream = FileReadUsingJava.class.getClassLoader().getResource("test.txt").openStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
bufferedReader.lines()
.forEach(System.out::println);
//File로 읽기
ClassLoader classLoader = FileReadUsingJava.class.getClassLoader();
File file = new File(classLoader.getResource("test.txt").getFile());
BufferedReader bufferedReader1 = new BufferedReader(new FileReader(file));
bufferedReader1.lines()
.forEach(System.out::println);
//Paths 사용
String path = FileReadUsingJava.class.getClassLoader().getResource("test.txt").getPath();
Stream<String> lines = Files.lines(Paths.get(path));
lines.forEach(System.out::println);
}
}
스프링 프레임워크를 사용한다면 ResourceUtils를 사용해도 된다. 이번에 처음 알았다. 스프링에 참 유틸 관련된 클래스가 많은 것 같다. 이거만 잘 활용해도 개발 생산성을 높일 수 있을 것 같다.
public class FileReadUsingSpring {
public static void main(String[] args) throws Exception {
//ResourceUtils
File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "test.txt");
Stream<String> lines = Files.lines(file.toPath());
lines.forEach(System.out::println);
//InputStream
InputStream inputStream = new ClassPathResource("test.txt").getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
bufferedReader.lines()
.forEach(System.out::println);
//File
File file2 = new ClassPathResource("test.txt").getFile();
BufferedReader bufferedReader1 = new BufferedReader(new FileReader(file2));
bufferedReader1.lines()
.forEach(System.out::println);
}
}
참고
https://stackoverflow.com/questions/15749192/how-do-i-load-a-file-from-resource-folder
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Github Status
- Mac
- 오라클
- elasticsearch
- oracle
- springboot
- jQuery
- Java
- 베리 심플
- LocalDate
- Linux
- Spring Security
- Spring
- localtime
- Kotlin
- Bash tab
- LocalDateTime
- input
- config-location
- mybatis
- svn
- intellij
- window
- docker
- k8s
- JavaScript
- rocky
- mybatis config
- 북리뷰
- maven
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함