๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java-๊ธฐ์ดˆ] ๋ฌธ์ž ๋‹จ์œ„ ์ŠคํŠธ๋ฆผ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 23.
๋ฐ˜์‘ํ˜•

โ–ถ ๋ฌธ์ž ๋‹จ์œ„ ์ŠคํŠธ๋ฆผ

โ€‹

*Reader

๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ๋Š” ์ŠคํŠธ๋ฆผ ์ค‘ ์ตœ์ƒ์œ„ ์ŠคํŠธ๋ฆผ

์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค

์„ค๋ช…

FileReader

ํŒŒ์ผ์—์„œ ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ๋Š” ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค์ด๋‹ค.

InputStreamReader

byte ๋‹จ์œ„๋กœ ์ฝ์€ ์ž๋ฃŒ๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค์ด๋‹ค.

BufferedReader

๋ฌธ์ž๋กœ ์ฝ์„ ๋•Œ ๋ฐฐ์—ด์„ ์ œ๊ณตํ•˜์—ฌ ํ•œ๊บผ๋ฒˆ์— ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์ด๋‹ค.

 

๋ฉ”์„œ๋“œ

์„ค๋ช…

int read( )

ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ํ•œ ๋ฌธ์ž๋ฅผ ์ฝ๋Š”๋‹ค. ์ฝ์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

int read(char[ ] buf)

ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ buf ๋ฐฐ์—ด์— ๋ฌธ์ž๋ฅผ ์ฝ๋Š”๋‹ค.

int read(char[ ] buf, int off, int len)

ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ buf ๋ฐฐ์—ด์˜ off ์œ„์น˜์—์„œ๋ถ€ํ„ฐ len ๊ฐœ์ˆ˜๋งŒํผ ๋ฌธ์ž๋ฅผ ์ฝ๋Š”๋‹ค.

void close( )

์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ซ๋Š”๋‹ค.

โ€‹

โ€‹

โ€‹

*FileReader

FileInputStream๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ์œผ๋ ค๋Š” ํŒŒ์ผ์ด ์—†์œผ๋ฉด FileNotFoundException์ด ๋ฐœ์ƒํ•œ๋‹ค.

Reader ํด๋ž˜์Šค๋Š” ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.

์ƒ์„ฑ์ž

์„ค๋ช…

FileReader(String name)

ํŒŒ์ผ ์ด๋ฆ„ name(๊ฒฝ๋กœ ํฌํ•จ)์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค.

FileReader(File f)

File ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค.

โ€‹

โ€‹

FileInputStreamTest2.java

package stream.inputstream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputStreamTest2 {
	public static void main(String[] args) {
		try (FileInputStream fis = new FileInputStream("reader.txt")) { // FileInputStream์„ ์ƒ์„ฑํ•  ๋•Œ reader.txt ํŒŒ์ผ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ
			int i;
			while ((i = fis.read()) != -1) {
				System.out.println((char) i);
			}
			System.out.println("end");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

-๋ฌธ์ž๋ฅผ ์ž…์ถœ๋ ฅํ•  ๋•Œ๋Š” ๋ฌธ์ž ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

โ€‹

โ€‹

FileReaderTest.java

package stream.reader;

import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {
	public static void main(String[] args) {
		try (FileReader fr = new FileReader("reader.txt")) {
			int i;
			while ((i = fr.read()) != -1) {
				System.out.print((char) i);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

โ€‹

 

*Writer

๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ ์ค‘ ์ตœ์ƒ์œ„ ์ŠคํŠธ๋ฆผ์ด๋‹ค.

์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค

์„ค๋ช…

FileWriter

ํŒŒ์ผ์— ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค์ด๋‹ค.

OutputStreamWriter

ํŒŒ์ผ์— byte ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•œ ์ž๋ฃŒ๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์ด๋‹ค.

BufferedReader

๋ฌธ์ž๋กœ ์“ธ ๋•Œ ๋ฐฐ์—ด์„ ์ œ๊ณตํ•˜์—ฌ ํ•œ๊บผ๋ฒˆ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์ฃผ๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์ด๋‹ค.

โ€‹

๋ฉ”์„œ๋“œ

์„ค๋ช…

void write(int c)

ํ•œ ๋ฌธ์ž๋ฅผ ํŒŒ์ผ์— ์ถœ๋ ฅํ•œ๋‹ค.

void write(char[] buf)

๋ฌธ์ž ๋ฐฐ์—ด buf์˜ ๋‚ด์šฉ์„ ํŒŒ์ผ์— ์ถœ๋ ฅํ•œ๋‹ค.

void write(char[] buf, int off, int len)

๋ฌธ์ž ๋ฐฐ์—ด buf์˜ off ์œ„์น˜์—์„œ๋ถ€ํ„ฐ len ๊ฐœ์ˆ˜์˜ ๋ฌธ์ž๋ฅผ ํŒŒ์ผ์— ์ถœ๋ ฅํ•œ๋‹ค.

void write(String str)

๋ฌธ์ž์—ด str์„ ํŒŒ์ผ์— ์ถœ๋ ฅํ•œ๋‹ค.

void write(String str, int off, int len)

๋ฌธ์ž์—ด str์˜ off๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ len ๊ฐœ์ˆ˜๋งŒํผ ํŒŒ์ผ์— ์ถœ๋ ฅํ•œ๋‹ค.

void flush( )

ํŒŒ์ผ์— ์ถœ๋ ฅํ•˜๊ธฐ ์ „์— ์ž๋ฃŒ๊ฐ€ ์žˆ๋Š” ๊ณต๊ฐ„(์ถœ๋ ฅ ๋ฒ„ํผ)์„ ๋น„์›Œ ์ถœ๋ ฅํ•œ๋‹ค.

void close( )

ํŒŒ์ผ๊ณผ ์—ฐ๊ฒฐ๋œ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๋Š”๋‹ค. ์ถœ๋ ฅ ๋ฒ„ํผ๋„ ๋น„์›Œ์ง„๋‹ค.

โ€‹

โ€‹

โ€‹

*FileWriter

๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค. FileOutputStream๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ถœ๋ ฅ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค.

์ƒ์„ฑ์ž

์„ค๋ช…

FileWriter(String name)

ํŒŒ์ผ ์ด๋ฆ„ name(๊ฒฝ๋กœ ํฌํ•จ)์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค.

FileWriter(String name, boolean append)

ํŒŒ์ผ ์ด๋ฆ„ name(๊ฒฝ๋กœ ํฌํ•จ)์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค. append ๊ฐ’์ด true๋ฉด ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•  ๋•Œ ํŒŒ์ผ ๋์— ์ด์–ด์„œ ์“ด๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ false์ด๋‹ค.

FileWriter(File f)

File ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค.

FileWriter(File f, boolean append)

File ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค. append ๊ฐ’์ด true๋ฉด ํŒŒ์ผ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์ƒ์„ฑํ•  ๋•Œ ํŒŒ์ผ ๋์— ์ด์–ด์„œ ์“ด๋‹ค. ๊ธฐ๋ณธ ๊ฐ’์€ false์ด๋‹ค.

โ€‹

โ€‹

1. writer.txt ๋นˆํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

โ€‹

2.

package stream.writer;

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTest {
	public static void main(String[] args) {
		try (FileWriter fw = new FileWriter("writer.txt")) {
			fw.write('A');                                // ๋ฌธ์ž ํ•˜๋‚˜ ์ถœ๋ ฅ
			char buf[] = { 'B', 'C', 'D', 'F', 'G' };

			fw.write(buf);                                // ๋ฌธ์ž ๋ฐฐ์—ด ์ถœ๋ ฅ
			fw.write("์•ˆ๋…•ํ•˜์„ธ์š”. ์ž˜ ์จ์ง€๋„ค์š”");          // ๋ฌธ์ž์—ด ์ถœ๋ ฅ
			fw.write(buf, 1, 2);                         // ๋ฌธ์ž ๋ฐฐ์—ด์˜ ์ผ๋ถ€ ์ถœ๋ ฅ
			fw.write("65");                              // ์ˆซ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€