웹사이트 검색

파일에 자바 추가


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

파일에 자바 추가

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

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

FileWriter를 사용하여 파일에 Java 추가

다음은 FileWriter를 사용하여 Java에서 파일에 추가하는 짧은 프로그램입니다. 나중에 파일 예제 프로그램에 대한 완전한 Java 추가를 살펴볼 것입니다.

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

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

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를 사용하여 Java의 파일에 텍스트 추가

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을 사용하여 Java의 파일에 추가

원시 데이터, 이진 데이터, 이미지, 비디오 등인 경우 파일에 데이터를 추가하려면 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 {
			// to append to file, you need to initialize FileWriter using below constructor
			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 {
			// below true flag tells OutputStream to append
			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 {
			// to append to file, you need to initialize FileWriter using below constructor
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			for (int i = 0; i < noOfLines; i++) {
				br.newLine();
				// you can use write or append method
				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 {
			// Below constructor argument decides whether to append or override
			fr = new FileWriter(file, true);
			fr.write(text);

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

}

이것이 자바 프로그램에서 파일에 추가하기 위한 전부입니다.

GitHub 리포지토리에서 더 많은 Java IO 예제를 확인할 수 있습니다.

참조:

  • PrintWriter API 문서
  • FileWriter API 문서
  • BufferedWriter API 문서
  • FileOutputStream API 문서