본문 바로가기

Java

[Java] 35

파일 입출력

- java → 파일 : 출력

- 파일 → java : 입력

​● Stream

- 데이터가 전송되는 통로

​● 파일 입출력 순서

0. 파일 객체 만들기

1. 파일 데이터가 전송될 수 있도록 Stream 열어주기

1-2. 버퍼 생성하기

2. 파일을 읽거나 쓰기

3-0. 버퍼 닫기

3. Stream 닫기

​● 인코딩 방식 설정하기

1. 프로젝트 별 인코딩 방식 설정하기

(1) 인코딩 방식을 설정하려는 프로젝트를 우클릭 후 Properties 클릭

(2) Properties 팝업창 좌측의 Resource 클릭

(3) Text file encoding의 other 선택 후 UTF-8 설정하여 Apply

2. 모든 워크스페이스에 동일한 인코딩 방식 설정하기

(1) 상단의 Window > Preferences 클릭

(2) Preferences 팝업창 좌측에서 General > workspace 클릭

(3) Text file encoding의 other 선택 후 UTF-8 설정하여 Apply

​● File 클래스

- File 객체를 만드는데 사용하는 클래스

- 생성자의 매개변수로는 내가 사용할 파일 경로를 알려준다.

​● FileWriter

- Stream을 여는데 사용하는 클래스

- 생성자의 매개변수로는 File 객체를 알려준다.

BufferedWriter

- 버퍼를 생성하는데 사용하는 클래스

- 생성자의 매개변수로는 FileWriter 객체를 알려준다.

write()

- 문자열 값을 파일에 출력한다.

- 줄바꿈을 포함하지 않는다.

 

 

 

실습(파일 입력(1))

0. 파일 객체 만들기

File f = new File("test.txt");
FileWriter fw = null;
BufferedWriter bw = null;

 

1. 파일 데이터가 전송될 수 있도록 Stream 열어주기

fw = new FileWriter(f, true);

 

1-2. 버퍼 생성하기

bw = new BufferedWriter(fw);

 

2. 파일 쓰기

// bw.write("상대경로를 활용하여 문자열을 작성해 보았습니다.\n");
bw.write("새로운 한 줄 추가\n");

 

3-0. 버퍼 닫기

if(bw != null) bw.close();

 

3. Stream 닫기

if(fw != null) fw.close();

 

※ 전체 코드

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriteTest {

	public static void main(String[] args) {

		// 0. 파일 객체 만들기
		File f = new File("test.txt");
		FileWriter fw = null;
		BufferedWriter bw = null;
		
		try {
		// 1. 파일 데이터가 전송될 수 있도록 Stream 열어주기
			// true 값을 주면 덧붙이기가 된다(기존 내용 유지 + 새로운 내용 추가)
			// false나 생략을 하면 덮어쓰기가 된다(기존 내용 X, 새로운 내용 덮어쓰기)
			fw = new FileWriter(f, true);
			
		// 1-2. 버퍼 생성하기
			bw = new BufferedWriter(fw);
			
		// 2. 파일 쓰기
//			bw.write("상대경로를 활용하여 문자열을 작성해 보았습니다.\n");
			bw.write("새로운 한 줄 추가\n");


		} catch (IOException e) {
			e.printStackTrace();
			

		} finally {
			try {
				// 3-0. 버퍼 닫기
				if(bw != null) bw.close();
				
				// 3. Stream 닫기
				if(fw != null) fw.close();
				

			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		

	}

}

 

결과

 

​​

실습(파일 입력(2))

- 프로젝트 폴더에 task.txt 파일을 생성하여 아래 내용 출력하기

// 0번째 줄입니다
// 1번째 줄입니다
// 2번째 줄입니다
// ...
// 9번째 줄입니다

 

0. 파일 객체 만들기

File f = new File("task.txt");
FileWriter fw = null;
BufferedWriter bw = null;

 

1. 파일 데이터가 전송될 수 있도록 Stream 열어주기

fw = new FileWriter(f);

 

1-2. 버퍼 생성하기

bw = new BufferedWriter(fw);

 

2. 반복문을 이용하여 파일 내용 쓰기

for (int i = 0; i < 10; i++) {
	bw.write(i + "번째 줄입니다\n");
}

 

3-0. 버퍼 닫기

if(bw != null) bw.close();

 

3. Stream 닫기

if(fw != null) fw.close();

 

※ 전체 코드

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTask {

	public static void main(String[] args) {
		
		// 파일 객체 만들기
		File f = new File("task.txt");
		
		FileWriter fw = null;
		BufferedWriter bw = null;
		
		try {
			// 스트림 열기
			fw = new FileWriter(f);
			
			// 버퍼 생성하기
			bw = new BufferedWriter(fw);
			
			// 반복문 출력하기
			for (int i = 0; i < 10; i++) {
				bw.write(i + "번째 줄입니다\n");
			}
			
			
		} catch (IOException e) {
			e.printStackTrace();

		} finally {
			try {
				// 3-0. 버퍼 닫기
				if(bw != null) bw.close();
				
				// 3. Stream 닫기
				if(fw != null) fw.close();
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

}

 

결과

 

 

'Java' 카테고리의 다른 글

[Java] 37  (0) 2022.02.10
[Java] 36  (0) 2022.02.08
[Java] 34  (0) 2022.02.05
[Java] 33  (0) 2022.02.03
[Java] 32  (0) 2022.02.02