일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- js
- table
- vscode
- html
- 배열
- Visual Studio Code
- json
- Eclipse
- windows
- CMD
- 이탈리아
- string
- list
- 문자열
- Button
- 테이블
- 자바스크립트
- Files
- 인텔리제이
- input
- Array
- date
- javascript
- IntelliJ
- CSS
- 이클립스
- Maven
- Java
- ArrayList
- Today
- Total
어제 오늘 내일
[Java] 파일에 텍스트 쓰기 본문
Java에서 파일을 다루는 법을 알아보고 있습니다.
[Java] 텍스트 파일 읽기 ( FileReader, BufferedReader, Scanner, Files )
[Java] 파일 생성하는 3가지 방법 (File, FileOutputStream, Files)
이번에는 Java API를 이용하여,
파일에 텍스트를 쓰는 방법을 알아보도록 하겠습니다.
- BufferedWriter
- PrintWriter
- FileOutputStream
- Files
- DataOutputStream
1. BufferedWriter
코드
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
try {
// 1. 파일 객체 생성
File file = new File("d:\\example\\writeFile.txt");
// 2. 파일 존재여부 체크 및 생성
if (!file.exists()) {
file.createNewFile();
}
// 3. Buffer를 사용해서 File에 write할 수 있는 BufferedWriter 생성
FileWriter fw = new FileWriter(file);
BufferedWriter writer = new BufferedWriter(fw);
// 4. 파일에 쓰기
writer.write("안녕하세요");
// 5. BufferedWriter close
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
File file = new File("d:\\example\\writeFile.txt");
File 객체를 생성합니다.
if (!file.exists()) {
file.createNewFile();
}
파일이 해당 경로에 있는지 체크한 후,
파일이 없으면 빈 파일을 하나 생성합니다.
FileWriter fw = new FileWriter(file);
BufferedWriter writer = new BufferedWriter(fw);
버퍼를 사용하면서, 파일을 쓰기 위해서
FileWriter와 BufferedWriter를 사용하였습니다.
FileWriter만 가지고도, 파일을 쓸 수 있습니다.
하지만, BufferedWriter와 함께 사용하면, 버퍼를 사용할 수 있기 때문에 더 효율적입니다.
writer.write("안녕하세요");
BufferedWriter의 write() 메소드를 이용해서 파일에 문자열을 씁니다.
writer.close();
다 사용한 BufferedWriter를 닫아 줍니다.
이어쓰기
FileWriter fw = new FileWriter(file, true);
FileWriter 생성자의 2번째 파라미터(append)는
기존에 작성된 파일이 있을 경우, 이어 붙여서 쓸지, 새로 파일을 만들어서 쓸지를 결정합니다.
위와 같이 생성자의 2번째 파라미터를 true로 하면,
기존에 작성된 파일이 있을 경우, 그 뒤에 이어 붙여서 문자열이 써집니다.
2. PrintWriter
코드
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class WriteFile {
public static void main(String[] args) {
try {
// 1. 파일 객체 생성
File file = new File("d:\\example\\writeFile.txt");
// 2. 파일 존재여부 체크 및 생성
if (!file.exists()) {
file.createNewFile();
}
// 3. Writer 생성
FileWriter fw = new FileWriter(file);
PrintWriter writer = new PrintWriter(fw);
// 4. 파일에 쓰기
writer.write("안녕하세요\n");
writer.println("Nice to meet you");
writer.print("!!");
// 5. PrintWriter close
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
결과
// d:\example\writeFile.txt
안녕하세요
Nice to meet you
!!
writer.write();
writer.println();
writer.print();
PrintWriter 클래스를 사용하면,
write() 메소드 뿐만 아니라, println(), print() 메소드를 사용할 수 있습니다.
println() 메소드를 사용하면 자동으로 줄 바꿈이 됩니다.
3. FileOutputStream
FileOutputStream은 byte를 쓸 수 있습니다.
따라서, FileOutputStream은 문자열을 파일에 쓸 때보다는,
이미지 파일을 만드는 등, row byte를 파일에 쓸때 더 적합합니다.
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
try {
// 1. 파일 객체 생성
File file = new File("d:\\example\\writeFile.txt");
// 2. 파일 존재여부 체크 및 생성
if (!file.exists()) {
file.createNewFile();
}
// 3. Writer 생성
FileOutputStream fos = new FileOutputStream(file);
// 4. 파일에 쓰기
fos.write("안녕하세요".getBytes());
// 5. FileOutputStream close
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
fos.write("안녕하세요".getBytes());
FileOutputStream의 write() 메소드는 파라미터로 byte를 받습니다.
4. Files
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class WriteFile {
public static void main(String[] args) {
try {
// 1. Path 객체 생성
Path path = Paths.get("d:\\example\\writeFile.txt");
// 2. 파일에 쓰기
Files.write(path, "안녕하세요".getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Files.write(path, "안녕하세요".getBytes());
Java 7부터 사용할 수 있는 java.nio.file.Files 클래스는 static 메소드만 가지고 있습니다.
Files의 static 메소드인 Files.write()는 파라미터로 받은 byte[]를 파일에 써줍니다.
5. DataOutputStream
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteFile {
public static void main(String[] args) {
try {
// 1. 파일 객체 생성
File file = new File("d:\\example\\writeFile.txt");
// 2. 파일 존재여부 체크 및 생성
if (!file.exists()) {
file.createNewFile();
}
// 3. Writer 생성
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
// 4. 파일에 쓰기
dos.writeUTF("안녕하세요");
// 5. DataOutputStream close
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
dos.writeUTF("안녕하세요");
DataOutputStream을 이용해서 파일에 데이터를 쓸 수 있습니다.
writeUTF() 메소드를 이용하면, UTF-8 인코딩을 적용하여 파일에 문자열을 쓸 수 있습니다.
Java API를 이용하여, 파일을 쓰는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] 현재 디렉토리 가져오기 (0) | 2021.05.30 |
---|---|
[Java] 파일, 디렉토리 삭제하기 (0) | 2021.05.29 |
[Java] 파일, 디렉토리 존재 여부 확인하기 (0) | 2021.05.29 |
[Java] 파일 생성하는 3가지 방법 (File, FileOutputStream, Files) (0) | 2021.05.29 |
[Java] 텍스트 파일 읽기 ( FileReader, BufferedReader, Scanner, Files ) (2) | 2021.05.29 |