Java에서 텍스트 파일에 텍스트 추가

Mohammad Irfan 2023년10월12일
  1. Java의 FileOutputStream 클래스를 사용하여 텍스트 파일에 텍스트 추가
  2. Java의 FileWriter 클래스를 사용하여 텍스트 파일에 텍스트 추가
  3. Java의 BufferedWriter 클래스를 사용하여 텍스트 파일에 텍스트 추가
  4. Java의 Files 클래스를 사용하여 텍스트 파일에 텍스트 추가
  5. Java에서 텍스트 파일에 텍스트 추가
Java에서 텍스트 파일에 텍스트 추가

이 자습서에서는 Java에서 기존 텍스트 파일에 텍스트를 추가하는 방법을 소개합니다. 더 나은 안내를 위해 몇 가지 예제 코드도 나열했습니다.

읽기와 쓰기는 파일로 작업할 때 할 수 있는 가장 기본적인 두 가지 작업입니다. Java에서 파일에 데이터를 쓰거나 추가하는 방법에는 여러 가지가 있습니다. 이 기사에서는 텍스트 파일에 추가하는 네 가지 방법에 대해 알아봅니다.

Java의 FileOutputStream 클래스를 사용하여 텍스트 파일에 텍스트 추가

FileOutputStream 클래스는 바이너리 데이터를 파일에 쓰는 데 사용됩니다. int 또는 float와 같은 기본 데이터 유형에 주로 선호되지만 문자 지향 데이터 작성에도 사용할 수 있습니다.

문자열을 쓰기 전에 먼저 바이트 배열로 변환해야 합니다. 이를 위해 getBytes() 메소드를 사용할 수 있습니다. 또한 생성자에 대한 두 번째 인수로 true를 전달해야 합니다. 이 두 번째 인수는 부울 추가 플래그에 대한 것으로 기존 파일에 추가하려고 함을 나타내기 위해 수행되었습니다.

무시하면 FileOutputStream 클래스가 파일 내용을 덮어씁니다. 파일이 언급된 위치에 아직 없으면 새 파일이 생성됩니다.

다음은 The quick brown fox jumps over the lazy dog 문장을 기존 파일에 추가하려는 예입니다. \r\n은 새 줄의 시작 부분에 텍스트를 삽입하는 데 사용됩니다.

import java.io.FileOutputStream;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileOutputStream f = new FileOutputStream(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes(); // converting string into byte array
      f.write(byteArr);
      f.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java의 FileWriter 클래스를 사용하여 텍스트 파일에 텍스트 추가

Java FileWriter 클래스는 파일에 문자 스트림을 기록하도록 설계되었습니다. 기존 파일이나 새 파일에 문자나 문자열을 추가하는 데 사용할 수 있습니다. 파일이 언급된 경로에 없으면 새 파일이 생성되고 데이터가 이 새 파일에 기록됩니다.

이전 FileOutputStream 클래스와 달리 쓰기 전에 문자열을 바이트로 변환할 필요가 없습니다. 그러나 FileWriter 생성자에 대한 두 번째 인수로 true도 전달해야 합니다. 이는 기존 파일에 추가하려고 함을 나타냅니다.

생략하면 파일의 기존 내용을 덮어씁니다. 다음 코드는 FileWriter를 사용하여 기존 파일에 한 줄을 추가하는 방법을 보여줍니다.

import java.io.FileWriter;
public class SimpleTesting {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      fw.write(lineToAppend);
      fw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java의 BufferedWriter 클래스를 사용하여 텍스트 파일에 텍스트 추가

FileWriter 클래스는 종종 BufferedWriter와 같은 다른 작성자에 의해 래핑됩니다. 이 프로세스는 BufferedWriterFileWriter보다 훨씬 효율적이기 때문에 수행됩니다.

여러 쓰기 작업이 있는 경우 BufferedWriterFileWriter보다 선호됩니다. 내부 버퍼 메모리를 사용하여 파일에 추가해야 하는 데이터를 저장합니다. 이 버퍼가 가득 차거나 더 이상 추가할 것이 없으면 BufferedWriter는 실제 파일에 씁니다.

자주 쓰는 대신 버퍼에서 파일에 많은 양의 데이터를 씁니다. 그의 시스템 호출이 줄어듭니다. 따라서 일반 FileWriter보다 훨씬 효율적입니다.

그러나 단일 쓰기 작업이 있는 경우 BufferedWriter는 쓰기 프로세스에 또 다른 단계를 추가합니다. 따라서 FileWriter를 사용하는 것이 좋습니다.

BufferedWriter를 사용하려면 먼저 BufferedWriter의 생성자에 전달할 FileWriter 개체가 필요합니다. 추가 플래그에 true를 사용해야 합니다.

다음 코드는 Java에서 BufferedWriter의 작동을 보여줍니다.

import java.io.BufferedWriter;
import java.io.FileWriter;
public class Main {
  public static void main(String args[]) {
    try {
      String filePath = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      FileWriter fw = new FileWriter(filePath, true);
      BufferedWriter bw = new BufferedWriter(fw);
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      bw.write(lineToAppend);
      bw.close();
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java의 Files 클래스를 사용하여 텍스트 파일에 텍스트 추가

Files 유틸리티 클래스는 Java 7에 추가되었으며 파일에 데이터를 쓰는 또 다른 방법을 제공합니다. 이를 위해 Files.write() 메서드를 사용합니다. 이 방법에는 파일 경로가 필요하며 추가할 문자열의 바이트 배열도 필요합니다.

또한 기존 파일에 텍스트를 추가하려면 StandardOpenOption.APPEND를 지정해야 합니다. 파일이 주어진 경로에 있는지 확인하십시오. 그렇지 않으면 NoSuchFileException을 반환합니다.

동일한 파일에 여러 번 기록해야 하는 경우에는 이 방법을 사용하지 않는 것이 좋습니다. 파일도 여러 번 열리고 닫혀 전체 성능이 저하되기 때문입니다.

아래의 다음 코드는 Java I/O에서 Files.write() 메소드가 작동하는 방식을 보여줍니다.

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class Main {
  public static void main(String args[]) {
    try {
      String file = "C:\\Users\\Lenovo\\Desktop\\demo.txt";
      String lineToAppend = "\r\nThe quick brown fox jumps over the lazy dog";
      byte[] byteArr = lineToAppend.getBytes();
      Files.write(Paths.get(file), byteArr, StandardOpenOption.APPEND);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

Java에서 텍스트 파일에 텍스트 추가

Java는 파일 처리를 위한 여러 옵션을 제공합니다. FileOutputStream, FileWriter, BufferedWriter 또는 Files 유틸리티 클래스를 사용하여 파일에 데이터를 추가할 수 있습니다.

FileOutputStreamFiles 유틸리티 클래스의 경우 먼저 문자열을 바이트열 배열로 변환한 다음 write() 메서드에 전달해야 합니다.

BufferedWriter는 동일한 파일에 소량의 데이터를 여러 번 써야 할 때 선호됩니다. 반면 FileWriterFiles 유틸리티 클래스는 많은 수의 쓰기에 대해 여러 시스템 호출을 수행합니다. 이는 전반적인 성능을 감소시킵니다.

관련 문장 - Java File

관련 문장 - Java IO