[JAVA] 자바 파일 쓰기에 대해 파헤치기 [FileOutputStream, FileWriter, PrintWriter 차이]

2023. 10. 16. 14:06·◎ Java/Java☕
728x90
반응형


 

[JAVA] 자바 콘솔 입력에 대해 파헤치기 [InputStream, InputStreamReader, BufferedReader 차이]

- 자바 콘솔 입력에 대해 파헤치기 1. InputStream 자바에서 사용자가 입력한 문자열을 얻기 위해서는 아래와 같이 System.in을 사용한다. import java.io.IOException; import java.io.InputStream; public class Sample { publ

yermi.tistory.com


- 자바 파일 쓰기에 대해 파헤치기

이번에는 파일 쓰기를 파헤쳐볼 예정이다.
이번에 만날 친구들은 FileOutputStream, FileWriter, PrintWriter이다.

1. FileOutputStream

아래의 예제를 실행하면 d:/ 디렉터리 바로 밑에 out.txt라는 파일이 생성된다.
import java.io.FileOutputStream;
import java.io.IOException;

public class Sample {
	public static void main(String[] args) throws IOException {
		FileOutputStream output = new FileOutputStream("d:/out.txt");
		output.close();
	}
}

out.txt 파일 생성

 

FileOutputStream 클래스를 사용하면 위처럼 파일을 생성할 수 있다.
(FileOutputStream 클래스는 객체를 생성할 때 생성자 입력으로 파일명을 넘겨주어야 한다.)

이번에는 생성한 파일에 내용을 입력해볼 것이다.
import java.io.FileOutputStream;
import java.io.IOException;

public class Sample {
	public static void main(String[] args) throws IOException {
		FileOutputStream output = new FileOutputStream("d:/out.txt");
		for(int i = 1 ; i < 11 ; i++) {
			String data = i + " 번째 줄입니다.\n\r";
			output.write(data.getBytes());
		}
		output.close();
	}
}

out.txt 파일 내에 내용이 입력되었다.

 

InputStream과 마찬가지로 OutputStream 역시 byte 단위로 데이터를 처리하는 클래스이다.

FileOutputStream은 OutputStream 클래스를 상속받아 만들어졌기에 byte 단위로 데이터를 처리한다.
이로 인해 String을 byte 배열로 바꾸어 주는 getBytes() 메서드를 이용하였다.

2. FileWriter

InputStream 때처럼 byte 단위로 데이터를 처리하는 건 매우 불편하다.
FileWriter를 사용하면 String을 byte 배열로 변환하지 않아도 된다.
import java.io.FileWriter;
import java.io.IOException;

public class Sample {
	public static void main(String[] args) throws IOException {
		FileWriter fw = new FileWriter("d:/out.txt");
		for(int i = 1 ; i < 11 ; i++) {
			String data = i + " 번째 줄입니다.\n\r";
			fw.write(data);
		}
		fw.close();
	}
}

3. PrintWriter

FileWriter를 사용하더라도 문자열 뒤에 개행문자 '\r\n'을 덧붙여야 한다.
PrintWriter를 사용하면 '\r\n'을 덧붙이는 대신 println이라는 메서드를 사용할 수 있다.
import java.io.IOException;
import java.io.PrintWriter;

public class Sample {
	public static void main(String[] args) throws IOException {
		PrintWriter pw = new PrintWriter("d:/out.txt");
		for(int i = 1 ; i < 11 ; i++) {
			String data = i + " 번째 줄입니다.";
			pw.println(data);
		}
		pw.close();
	}
}

 

참고문헌 : 박응용(2023), Do it! 점프 투 자바, 이지스퍼블리싱


728x90
반응형
'◎ Java/Java☕' 카테고리의 다른 글
  • [JAVA] 자바에서 Map을 반복시키는 방법 [Java Map 반복문, 순회하는 방법]
  • [JAVA] 자바에서 txt 파일 읽는 방법 [FileInputStream, FileReader 차이]
  • [JAVA] 자바 콘솔 입력에 대해 파헤치기 [InputStream, InputStreamReader, BufferedReader 차이]
  • [JAVA] 자바(Java)에서 운영체제 인코딩 확인하는 방법 [내 OS는 어떤 인코딩을 쓰고 있을까?]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (1024) N
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (30)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ Infra & DevOps (19) N
        • LGTM Stack🔭 (5)
        • Kafka🐦‍🔥 (0)
        • Kubernetes🚢 (8)
        • KubeCon Japan 2026⚓ (6) N
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (49)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (5)
        • 오늘가챠🃏 (8)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (80)
        • 백준(BOJ)👨🏻‍💻 (71)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
      • ◈ Study (129)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 알고리즘(Algorithm)🎡 (14)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (11)
        • 인공지능 AI🛸 (8)
      • ◈ 공부모임 (57)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (17)
        • 국가기술자격 서포터즈🌻 (12)
      • ◈ 자격증 공부 (48)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 정보보안기사⚜️ (11)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (124)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (55)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 반응형
    250x250
  • 태그

    SQL
    Error Note
    Project
    jsp
    spring boot
    Java
    백준 티어
    백준
    꿀팁
    자바스크립트
    일상
    코딩
    Database
    javascript
    코딩 테스트
    BOJ
    spring
    Oracle
    CSS
    프로그래밍
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[JAVA] 자바 파일 쓰기에 대해 파헤치기 [FileOutputStream, FileWriter, PrintWriter 차이]
상단으로

티스토리툴바