ํ๋ก๊ทธ๋จ์๋ ํ์ผ์ด๋ ๋ค๋ฅธ ๊ณณ์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐ๊ธฐ ์ํ ์๊ตฌ ์ฌํญ์ด ํฌํจ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ง๋ฌธ์ ์ ๊ธฐํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ด๋ค ํด๋์ค๋ฅผ ์ ํํด์ผ ํ ๊น์? ์ค๋ ์ฐ๋ฆฌ๋ ์ด ์ญํ ์ ์ ํฉํ ํ๋ณด์์ธ 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(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 ๋ง ํ์ฉํฉ๋๋ค .
์ง๊ธ์ ๊ทธ๊ฒ ๋ค์ผ! ์ค๋ ์ฐ๋ฆฌ๋ ๋ฒํผ, ํ์ผ์ ๋ฒํผ๋ง๋ ์ฐ๊ธฐ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ ๋ฐ ์ด๋ฅผ ์ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค.
GO TO FULL VERSION