티스토리 뷰
파일 직접 읽기
.readString()
./(현재 디렉토리)의 파일 목록 출력
@Test
void fileList(){
File dir = new File("./");
File files[] = dir.listFiles();
for (File file : files) {
System.out.println(file);
}
}
결과
./gradle
./gradlew
./build.gradle
./.gradle
./build
./gradlew.bat
./settings.gradle
./.idea
./src
파일 생성하기
./ 의 파일 목록을 보았으니 ./에 numbers.txt 파일을 생성 해보겠습니다.
@Test
void createANewFile() throws IOException {
File file = new File("./numbers.txt");
System.out.println("파일 생성 되었는지?:" + file.exists());
}
결과
파일 생성 되었는지?:false
결과는 false입니다. 이렇게만 하면 파일이 생성되지 않습니다.
file.createNewFile() 을 해줘야 생성 됩니다.
@Test
void createANewFile() throws IOException {
File file = new File("./numbers.txt");
file.createNewFile();
System.out.println("파일 생성 되었는지?:" + file.exists());
}
결과
파일 생성 되었는지?:true
실제로 numbers.txt라는 파일이 생성 되었습니다.
Files로 파일이 존재하는지 확인 하기
@Test
void FilesExists() {
boolean r = Files.exists(Paths.get("./numbers.txt"));
System.out.println(r);
}
결과
true
BufferedReader로 파일 읽기
한줄씩 읽기
./numbers.txt 가 존재한다는 것을 알기 때문에 파일을 읽어 보겠습니다.
BufferedReader의 생성자의 두번째 파라메터는 버퍼의 크기 입니다. 지금은 16*1024이므로 16Kb입니다.
@Test
void bufferedReader() throws IOException {
BufferedReader br = new BufferedReader(
new FileReader("./numbers.txt"),
16 * 1024
);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
결과
___empty___
결과는 아무것도 안나옵니다. numbers.txt에 값을 넣고 실행 해보겠습니다.
numbers.txt
1
2
3
4
결과
1
2
3
4
FileReader를 쓰는 방법
인코딩을 지정할 수 있습니다.
public List<String> getLines(String fileName) throws IOException {
List<String> lines = new LinkedList<>();
BufferedReader br = new BufferedReader(new FileReader(fileName, Charset.forName("EUC-KR")));
String line;
while ((line = br.readLine()) != null) {
lines.add(line);
}
return lines;
}
Java8 스타일 File읽기
Files.newBufferedReader() 를 씁니다.
public class NewBufferedReader {
public void read() {
try(BufferedReader br = Files.newBufferedReader(
Paths.get("afile.txt"),StandardCharsets.UTF_8)){
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
NewBufferedReader newBufferedReader = new NewBufferedReader();
newBufferedReader.read();
}
}
한 바이트씩 읽기
public void bufferedReader(String filename) throws IOException {
BufferedReader br = new BufferedReader(
new FileReader(filename),
16 * 1024
);
System.out.println((char)br.read());
System.out.println((char)br.read());
System.out.println((char)br.read());
System.out.println((char)br.read());
}
결과
i
d
h
이제 파일을 읽어올 수 있게 되었습니다.
Files
Files는 File을 다룰 때 유용한 메소드를 제공 해줍니다.
.isDirectory(Path)
Java에서 테스트 코드를 작성 할 때 파일을 읽어와서 테스트코드를 만들고 싶을 때가 있습니다. 그런데 현재 디렉토리는 어디일까요? "./"는 어디일지 궁금 할 때 먼저 .isDirectory(Path) 를 써서 해당 path가 디렉토리인제 먼저 확인 해볼 수 있습니다.
@Test
void sum() throws IOException {
System.out.println(Files.isDirectory(Paths.get("./")));
}
결과
true
현재 class의 절대 경로
@Test
void absolutePath(){
System.out.printf("class의 절대경로: %s %n",this.getClass().getResource("").getPath());
}
결과
class의 절대경로: /Users/kyeongrok/git/java/toby_94_to/build/classes/java/test/dao/
end.
참고
https://hianna.tistory.com/587
[Java] 텍스트 파일 읽기 ( FileReader, BufferedReader, Scanner, Files ) - 어제 오늘 내일 (tistory.com)
'Language > JAVA' 카테고리의 다른 글
JPA 1:N M:1 OneToMany ManyToOne 매핑 (0) | 2023.01.19 |
---|---|
Java 정렬 기준과 PriorityQueue (0) | 2022.12.07 |
java 현재 디렉토리(dir)에 어떤 파일, 디렉토리가 있나 보기 (0) | 2019.06.20 |
Java Static이란? 사용 방법 내가 사용한 곳 (0) | 2019.04.09 |
Java(Spring)로 Shell Script실행 하기 (0) | 2019.03.05 |
- Total
- Today
- Yesterday
- Sh
- docker container whale
- 도커각티슈케이스
- docker container tissue
- 이직
- docker container tissue box
- 도커티슈박스
- 2017 티스토리 결산
- 도커컨테이너
- Linux
- docker container
- 도커각티슈박스
- docker container case
- vim
- 개발자
- 싱가폴
- shellscript
- 도커티슈케이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |