18. 파일 입출력 (2) - 파일 쓰기
이번 포스트에서는 자바가 제공하는 몇가지 유틸리티 클래스를 이용해 파일에 데이터를 쓰는 방법을 알아보도록 한다. 이전 포스트에서 File을 이용해 파일 생성하는 법을 했지만, 실제로는 이 유틸리티 클래스를 이용해 파일을 만드는게 보통이다. 이 유틸리티 클래스들은 내부적으로 File클래스를 사용하고 있다. 대신 우리가 디스크에 write하기위한 복잡한 과정을 거치지 않아도 편하게 '쓰기'오퍼레이션이 가능하도록 하는 메서드를 제공한다.
이전 포스트
목표
- FileWriter를 이용해 파일 쓰기
- BufferedWriter를 이용해 파일쓰기
- PrintWriter를 이용해 파일쓰기
- FileOutputStream을 이용해 파일쓰기
- Java 8 try-with-resource
- Java 8 : java.nio 클래스를 이용해 파일쓰기
프로젝트 구조
FileTutorial
├── FileTutorial.iml
└── src
└── Main.java
1 directory, 2 files
FileWriter를 이용해 파일 쓰기
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기";
String fileName = "my_first_file.txt";
FileWriter writer = new FileWriter(fileName);
writer.write(fileContent);
writer.close();
}
}
BufferedWriter를 이용해 파일쓰기
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기";
String fileName = "my_first_file.txt";
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
writer.write(fileContent);
writer.close();
}
}
PrintWriter를 이용해 파일쓰기
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기 PrintWriter";
String fileName = "my_first_file.txt";
PrintWriter writer = new PrintWriter(fileName);
writer.println(fileContent);
writer.close();
}
}
FileOutputStream을 이용해 파일쓰기
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기 PrintWriter";
String fileName = "my_first_file.txt";
FileOutputStream outputStream = new FileOutputStream(fileName);
byte[] bytes = fileContent.getBytes();
outputStream.write(bytes);
outputStream.close();
}
}
FileOutputStream을 이용해 byte 배열을 파일에 쓸 수 있다.
Java 8 try-with-resource
매번 .close()를 불러줘야하는게 귀찮고, 잊어버릴수도 있다. 자바 8에서는 이를 해소하기 위해 try-with-resource라는 문법을 제공한다.
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기";
String fileName = "my_first_file.txt";
try (PrintWriter writer = new PrintWriter(fileName)) {
writer.println(fileContent);
}
}
}
예를들어 PrintWriter를 이용하면 위와 같다. IO관련 클래스들을 try ( IO 오브젝트 생성 ) { IO 작업 } 이렇게 하면 try문이 끝난 후 자바가 알아서 close를 불러준다. 더불어 java 8에서는 nio라는 패키지를 제공해 아래처럼 간단하게 파일 Write을 할 수도 있다.
Java 8 : java.nio 클래스를 이용해 파일쓰기
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
String fileContent = "파일 쓰기 java.nio";
String fileName = "my_first_file.txt";
Path path = Paths.get(fileName);
Files.write(path, fileContent.getBytes());
}
}
끝
이번 포스트에서는 각종 Writer를 이용해 파일 쓰기를 하는 방법을 알아보았다. 다음 포스트에서는 파일 읽기에 대해 알아보도록 한다.