산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java OutputStreamWriter 마스터하기: 문자-바이트 변환과 실전 예제

Java OutputStreamWriter 클래스

Java의 OutputStreamWriter로 캐릭터와 바이트 스트림을 연결하는 방법을 실전 코드 스니펫과 함께 알아봅니다.

java.io의 OutputStreamWriter 클래스는 문자 데이터를 바이트 데이터로 변환하는 다리 역할을 합니다. 추상 Writer 클래스를 확장하며 FileOutputStream 같은 바이트 스트림과 함께 작동합니다.

일부 유니코드 문자가 여러 바이트에 걸치므로, OutputStreamWriter는 바이트 스트림에 쓸 때 문자 인코딩이 올바르게 적용되도록 보장합니다.


OutputStreamWriter 생성하기

필요한 클래스들을 임포트하는 것으로 시작합니다:

import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
import java.nio.charset.Charset;

파일을 타겟팅하는 FileOutputStream을 인스턴스화한 다음 OutputStreamWriter로 래핑합니다. 기본 생성자는 플랫폼의 기본 캐릭터셋을 사용하지만, 환경 간 일관성을 위해 UTF-8이나 UTF-16을 명시적으로 설정할 수 있습니다:

// 기본 캐릭터셋
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("output.txt"));
// 명시적 UTF-8
OutputStreamWriter writerUtf8 = new OutputStreamWriter(
    new FileOutputStream("output_utf8.txt"), Charset.forName("UTF-8"));

OutputStreamWriter의 핵심 메서드

OutputStreamWriter는 Writer의 모든 추상 메서드를 구현합니다. 가장 일반적으로 사용되는 메서드들은 다음과 같습니다:

write() 메서드


예제: 텍스트를 파일에 쓰기

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) {
        String data = "This is a line of text inside the file.";
        try {
            FileOutputStream fileOut = new FileOutputStream("output.txt");
            OutputStreamWriter writer = new OutputStreamWriter(fileOut, Charset.forName("UTF-8"));
            writer.write(data);
            writer.flush();
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

이 프로그램을 실행하면 output.txt가 생성되며 다음 내용이 들어있습니다:

This is a line of text inside the file.

getEncoding() 메서드

getEncoding()을 사용하여 현재 사용 중인 캐릭터셋을 조회합니다:

FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter defaultWriter = new OutputStreamWriter(file);
OutputStreamWriter utf8Writer = new OutputStreamWriter(file, Charset.forName("UTF-8"));
System.out.println("Default encoding: " + defaultWriter.getEncoding());
System.out.println("UTF-8 encoding: " + utf8Writer.getEncoding());

실행 결과

Default encoding: Cp1252
UTF-8 encoding: UTF-8

캐릭터셋이 지정되지 않으면 플랫폼 기본값이 반환됩니다. 캐릭터셋을 명시적으로 설정하면 일관된 동작을 보장합니다.

팁: 정밀한 제어를 위해 Charset.forName()을 사용하세요. 자세한 내용은 공식 Java Charset API를 참조하세요.


close() 메서드

시스템 리소스를 해제하기 위해 항상 close()를 호출하세요. 닫은 후에는 라이터를 다시 사용할 수 없습니다.


추가 유용한 메서드

메서드설명
flush()버퍼링된 데이터를 즉시 기본 스트림에 씁니다.
append()문자나 문자열을 라이터에 편리하게 추가합니다.

완전한 레퍼런스는 공식 Java OutputStreamWriter Javadoc을 참조하세요.

java

  1. Java final 키워드 마스터: 변수, 메서드, 클래스에서의 활용
  2. Java instanceof 연산자 완벽 가이드: 기본 사용법부터 상속, 인터페이스까지
  3. Java 상속 마스터: 개념, 종류, 실전 예제 총정리
  4. Java 정적 중첩 클래스 이해: 용법, 내부 클래스와의 차이, 예제
  5. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  6. Java 싱글톤 패턴 완벽 가이드: 안전하게 구현하고 사용하기
  7. Java 리플렉션 마스터: 런타임에 클래스, 메서드, 필드 검사 및 조작
  8. Java ObjectOutputStream 마스터하기: 직렬화, 메서드, 실전 예제
  9. Java 제네릭 마스터하기: 재사용 가능하고 타입 안전한 코드 작성
  10. java.io로 Java 파일 작업 마스터하기 – 생성, 읽기, 쓰기 및 삭제