자바 파일에 추가하기

오늘은 자바에서 파일에 추가하는 방법을 알아보겠습니다. 자바 파일 추가는 일반적인 자바 IO 작업입니다. 예를 들어, 우리가 무언가를 서버 로그에 출력할 때, 기존 파일에 추가됩니다.

자바 파일에 추가

다음 클래스를 사용하여 자바에서 파일에 추가할 수 있습니다.

  1. FileWriter를 사용하여 자바에서 파일에 추가
  2. BufferedWriter를 사용하여 기존 파일에 내용 추가
  3. PrintWriter를 사용하여 자바에서 파일에 텍스트 추가
  4. FileOutputStream을 사용하여 자바에서 파일에 추가

텍스트 데이터를 작업하고 쓰기 작업 수가 적다면, FileWriter를 사용하고 append 플래그 값을 true로 설정해야 합니다. 쓰기 작업 수가 많다면 BufferedWriter를 사용해야 합니다. 기존 파일에 이진 또는 원시 스트림 데이터를 추가하려면 FileOutputStream을 사용해야 합니다.

FileWriter를 사용하여 자바에서 파일에 추가

여기는 FileWriter를 사용하여 자바에서 파일에 추가하는 짧은 프로그램입니다. 나중에 자바에 대한 파일 추가 예제 프로그램을 살펴보겠습니다.

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
fr.write("data");
fr.close();

BufferedWriter를 사용하여 기존 파일에 자바 내용 추가

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
br.write("data");

br.close();
fr.close();

PrintWriter를 사용하여 자바에서 파일에 텍스트 추가

또한 PrintWriter를 사용하여 자바에서 파일에 추가할 수 있습니다.

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
PrintWriter pr = new PrintWriter(br);
pr.println("data");
pr.close();
br.close();
fr.close();

FileOutputStream을 사용하여 자바에서 파일에 추가

원시 데이터, 이진 데이터, 이미지, 비디오 등의 데이터를 파일에 추가할 때는 FileOutputStream을 사용해야 합니다.

OutputStream os = new FileOutputStream(new File("append.txt"), true);
os.write("data".getBytes(), 0, "data".length());
os.close();

Java 파일에 추가 예제

위에서 논의한 모든 다른 옵션을 보여주는 최종 Java 파일에 추가하는 프로그램입니다.

package com.journaldev.files;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

public class JavaAppendToFile {

	/**
	 * Java append to file example
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		String filePath = "/Users/pankaj/Downloads/append.txt";

		String appendText = "This String will be appended to the file, Byte=0x0A 0xFF";

		appendUsingFileWriter(filePath, appendText);

		appendUsingBufferedWriter(filePath, appendText, 2);

		appendUsingPrintWriter(filePath, appendText);

		appendUsingFileOutputStream(filePath, appendText);
	}

	private static void appendUsingPrintWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		PrintWriter pr = null;
		try {
			// 파일에 추가하려면 아래 생성자를 사용하여 FileWriter를 초기화해야 합니다.
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			pr = new PrintWriter(br);
			pr.println(text);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				pr.close();
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use Stream for java append to file when you are dealing with raw data, binary
	 * data
	 * 
	 * @param data
	 */
	private static void appendUsingFileOutputStream(String fileName, String data) {
		OutputStream os = null;
		try {
			// true 플래그는 OutputStream이 추가되도록 지정합니다.
			os = new FileOutputStream(new File(fileName), true);
			os.write(data.getBytes(), 0, data.length());
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use BufferedWriter when number of write operations are more
	 * 
	 * @param filePath
	 * @param text
	 * @param noOfLines
	 */
	private static void appendUsingBufferedWriter(String filePath, String text, int noOfLines) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		try {
			// 파일에 추가하려면 아래 생성자를 사용하여 FileWriter를 초기화해야 합니다.
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			for (int i = 0; i < noOfLines; i++) {
				br.newLine();
				// write 또는 append 메소드를 사용할 수 있습니다.
				br.write(text);
			}

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Use FileWriter when number of write operations are less
	 * 
	 * @param filePath
	 * @param text
	 * @param noOfLines
	 */
	private static void appendUsingFileWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		try {
			// 아래 생성자의 인수를 사용하여 추가 또는 덮어쓸지를 결정합니다.
			fr = new FileWriter(file, true);
			fr.write(text);

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

이것으로 Java 프로그램에서 파일에 추가하는 것에 대해 끝났습니다.

더 많은 Java IO 예제는 GitHub Repository에서 확인할 수 있습니다.

참고:

Source:
https://www.digitalocean.com/community/tutorials/java-append-to-file