ํ”„๋กœ๊ทธ๋žจ์—๋Š” ํŒŒ์ผ์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์“ฐ๊ธฐ ์œ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์งˆ๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ์š”? ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์ด ์—ญํ• ์— ์ ํ•ฉํ•œ ํ›„๋ณด์ž์ธ BufferedWriter ํด๋ž˜์Šค ๋ฅผ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค .

BufferedWriter๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

BufferedWriter๋Š” ๋ฒ„ํผ๋ง๋œ ๋ฌธ์ž๋ฅผ ์ŠคํŠธ๋ฆผ์— ์“ฐ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์  ๋ฏธ๋””์–ด์— ์•ก์„ธ์Šคํ•˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋งค๋ฒˆ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฒ„ํผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ด ๋‹ค์Œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ํ•œ ๋ฒˆ์— ๋งค์ฒด์— ์”๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์“ฐ๊ธฐ ์†๋„๋ฅผ ํฌ๊ฒŒ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฒ„ํผ ํฌ๊ธฐ๋Š” 8192์ž์ด์ง€๋งŒ ์ƒ์„ฑ์ž์—์„œ ์ƒˆ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BufferedWriter(Writer in, int sz)

์—ฌ๊ธฐ์„œ ์ƒ์„ฑ์ž์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋Š” ์ž‘์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  sz ๊ฐ€ ์ƒˆ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ผ๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค .

Java์—๋Š” BufferedReader ํด๋ž˜์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ๋ฒ„ํผ๋ง๋œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„ํผ๋ž€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์‹ค์ œ ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ๋Š” ์Šˆํผ๋งˆ์ผ“์˜ ๋ฐ”๊ตฌ๋‹ˆ๋‚˜ ์‡ผํ•‘ ์นดํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ’ˆ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ๊ณ„์‚ฐ๋Œ€๋กœ ๊ฑธ์–ด๊ฐ€์„œ ์ง€๋ถˆํ•˜๊ณ  ์ฐจ ํŠธ๋ ํฌ์— ๋„ฃ์€ ๋‹ค์Œ ๋‹ค๋ฅธ ํ’ˆ๋ชฉ์„ ์œ„ํ•ด ๋‹ค์‹œ ์˜ค๋Š” ๋Œ€์‹  ์‡ผํ•‘ ์นดํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์›ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋„ฃ์€ ๋‹ค์Œ ์ง€๋ถˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์‚ฐ๋Œ€์—์„œ. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฒ„ํผ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•œ ๋‹ค์Œ ๊ฐ ์กฐ๊ฐ์„ ๋ณ„๋„๋กœ ์“ฐ๋Š” ๋Œ€์‹  ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€์ ธ์™€์„œ ์”๋‹ˆ๋‹ค.

BufferedWriter ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ๋ฐ ๋ฉ”์„œ๋“œ

์ด์ œ BufferedWriter ํด๋ž˜์Šค๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค . ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

public BufferedWriter(Writer out)
public BufferedWriter(Writer out, int sz)

๋‘ ์ƒ์„ฑ์ž ๋ชจ๋‘์—์„œ out์€ ์“ธ ์ŠคํŠธ๋ฆผ์ด๊ณ  sz ๋Š” ์ด๋ฏธ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ ๋ฒ„ํผ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

BufferedWriter ํด๋ž˜์Šค ์—๋Š” ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ๊ทธ ์ค‘ ์ผ๋ถ€๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ(๋ฌธ์ž[] ๋ฐฐ์—ด) ๋ฒ„ํผ์— char ๋ฐฐ์—ด์„ ์”๋‹ˆ๋‹ค.
write(String s, int off, int len) ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ๋ฒ„ํผ์— ์”๋‹ˆ๋‹ค.
์ถ”๊ฐ€(๋ฌธ์ž C) ๋ฒ„ํผ์— ๋ฌธ์ž ์“ฐ๊ธฐ
์ถ”๊ฐ€(CharSequence csq, int ์‹œ์ž‘, int ๋) ๋ฐฐ์—ด์˜ ์ผ๋ถ€๋ฅผ ๋ฒ„ํผ์— ์”๋‹ˆ๋‹ค.
newLine() ์ค„ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์”๋‹ˆ๋‹ค.
ํ”Œ๋Ÿฌ์‹œ() ์ŠคํŠธ๋ฆผ์„ ํ”Œ๋Ÿฌ์‹œํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์— ๊ฐ’์„ ์“ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ๋ด…์‹œ๋‹ค. ์„ ์œ„ํ•ด์ž‘๊ฐ€๋งค๊ฐœ๋ณ€์ˆ˜, ์šฐ๋ฆฌ๋Š”FileWriter์ƒ์„ฑ์ž์—๊ฒŒ. ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ฐœ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

FileWriter(ํŒŒ์ผ ํŒŒ์ผ)
FileWriter(ํŒŒ์ผ ํŒŒ์ผ, ๋ถ€์šธ ์ถ”๊ฐ€)
FileWriter(FileDescriptor fd)
FileWriter(๋ฌธ์ž์—ด ํŒŒ์ผ ์ด๋ฆ„)
FileWriter(๋ฌธ์ž์—ด ํŒŒ์ผ ์ด๋ฆ„, ๋ถ€์šธ ์ถ”๊ฐ€)

์ด ์˜ˆ์—์„œ๋Š” ํŒŒ์ผ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("file.txt"))){

	String message = "Hello, Amigo! This is a very important message!";
	bufferedWriter.write(message);
	bufferedWritter.flush();
}
catch(IOException ex){
System.out.println(ex.getMessage());
 }

์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” write(String str) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ str์„ file.txt ํŒŒ์ผ ์— ์”๋‹ˆ๋‹ค .

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • write(char[] array ) โ€” ์ด ๋ณ€ํ˜•์€ char ๋ฐฐ์—ด์„ ๋ฐ›์•„ ์”๋‹ˆ๋‹ค .

  • write(String s, int off, int len) โ€” ์ด ๋ณ€ํ˜•์€ ๋ฌธ์ž์—ด s๋ฅผ ์ทจํ•ฉ๋‹ˆ๋‹ค . ์“ฐ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•  ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค์ธ ์˜คํ”„์…‹ off ; len ์€ ๊ธฐ๋กํ•  ๋ฌธ์ž์—ด(ํ•˜์œ„ ๋ฌธ์ž์—ด)์˜ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.

try(BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("file.txt"))){
	String message = "Hello, Amigo! This is a very important message!";
	bufferedWriter.write(message, 0, 11);
 	bufferedWriter.flush();

} catch(IOException ex) {
System.out.println(ex.getMessage());
}

์ด ์ฝ”๋“œ๋Š” ํŒŒ์ผ์— "Hello, Amig"๋ฅผ ์“ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์— ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 11์ž๋ฅผ ์“ฐ๋„๋ก ์ง€์‹œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ฝ”๋“œ์—๋Š” try-with ๋ฆฌ์†Œ์Šค ๋ธ”๋ก ๋„ ์žˆ์Šต๋‹ˆ๋‹ค .

try(BufferedWriter bufferedWritter = new BufferedWriter(new FileWriter("file.txt")))

์ด๊ฒƒ์€ close() ๋ฉ”์„œ๋“œ๊ฐ€ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.bufferedWriterAutoCloseable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค .

์ฝ”๋“œ์˜ flush() ๋ฉ”์„œ๋“œ๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ํ”Œ๋Ÿฌ์‹œํ•˜์—ฌ ๋ฒ„ํผ๋ง๋œ ๋ชจ๋“  ๋ฐ”์ดํŠธ๋ฅผ ๊ฐ•์ œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค . ๋ฒ„ํผ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•ด์•ผ ํ•˜๊ณ  ๋ฒ„ํผ๋ง๋œ ๋ฐ”์ดํŠธ๋ฅผ ์จ์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ˜ธ์ถœ ์—†์ด๋Š” ์“ฐ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BufferedWriter ํด๋ž˜์Šค์—๋Š” ๋ฉ”์‹œ์ง€์— ์ƒˆ ์ค„์„ ์ถ”๊ฐ€ํ•˜๋Š” newLine() ๋ฉ”์„œ๋“œ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค .

try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("file.txt"))) {
        String message = "Hello, Amigo! This is a very important message!";
        bufferedWriter.write(message, 0, 13);
        bufferedWriter.newLine();
        bufferedWriter.write(message, 15, 33);
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }

ํŒŒ์ผ์—์„œ ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•, ์•„๋ฏธ๊ณ !
์ด๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•œ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค!

append() ๋ฉ”์„œ๋“œ ์˜ ์„œ๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

public Writer append(CharSequence csq, int start, int end)

csq ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค . ์—ฌ๊ธฐ์„œ start ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค์ด๊ณ  end ๋Š” ์‚ฝ์ž…ํ•  ๋ฌธ์ž์—ด(๋˜๋Š” ํ•˜์œ„ ๋ฌธ์ž์—ด)์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ๋์ด ์žˆ๋Š” ๋ฌธ์ž๋Š” ์‚ฝ์ž…๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("file.txt"))) {
    String message = "Hello, Amigo! This is a very important message!";
    bufferedWriter.append(message, 0, 7);
    bufferedWriter.flush();
} catch (IOException ex) {
    System.out.println(ex.getMessage());
}

์ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,

์ฆ‰, ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํผ์— ์ถ”๊ฐ€ํ•  ๋ฌธ์ž์—ด ๋ถ€๋ถ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

write() ์™€ append() ์˜ ์ฐจ์ด์ ์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๋จผ์ € ๋‘˜ ๋‹ค ์›์น™์ ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฐ’์„ ์”๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ฐจ์ด์ ์€ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ•์ด ๋” ์ƒˆ๋กญ๊ณ  CharSequence๋ฅผ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ String์ด CharSequence๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Strings ๋ฐ StringBuilders ๋ฐ StringBuffers๋ฅผ ์ถ”๊ฐ€ ๋ฐฉ๋ฒ• ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค . ๊ทธ๋Ÿฌ๋‚˜ write() ๋ฉ”์„œ๋“œ๋Š” String ๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค .

์ง€๊ธˆ์€ ๊ทธ๊ฒŒ ๋‹ค์•ผ! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ๋ฒ„ํผ, ํŒŒ์ผ์— ๋ฒ„ํผ๋ง๋œ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.