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

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

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

โ–ถ byte ๋‹จ์œ„ ์ŠคํŠธ๋ฆผ

โ€‹

*InputStream

byte ๋‹จ์œ„๋กœ ์ฝ๋Š” ์ŠคํŠธ๋ฆผ ์ค‘ ์ตœ์ƒ์œ„ ์ŠคํŠธ๋ฆผ์ด๋‹ค.

InputStream์€ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•œ ์ถ”์ƒ ํด๋ž˜์Šค๋กœ์„œ ํ•˜์œ„ ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค๊ฐ€ ์ƒ์†๋ฐ›์•„ ๊ฐ ํด๋ž˜์Šค ์—ญํ• ์— ๋งž๊ฒŒ ์ถ”์ƒ ๋ฉ”์„œ๋“œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

*InputStream์ด ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•˜์œ„ ํด๋ž˜์Šค

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

์„ค๋ช…

FileInputStream

ํŒŒ์ผ์—์„œ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ๋Š”๋‹ค.

ByteArrayInputStream

Byte ๋ฐฐ์—ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ๋Š”๋‹ค.

FilterInputStream

๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์—์„œ ์ž๋ฃŒ๋ฅผ ์ฝ์„ ๋•Œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์˜ ์ƒ์œ„ ํด๋ž˜์Šค์ด๋‹ค.

(๋ณด์กฐ ์ŠคํŠธ๋ฆผ์€ '15-5 ๋ณด์กฐ ์ŠคํŠธ๋ฆผ'์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ๋‹ค.)

โ€‹

 

InputStream์€ byte ์ž๋ฃŒ๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ฉ”์„œ๋“œ

์„ค๋ช…

int read( )

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ ํ•œ byte์˜ ์ž๋ฃŒ๋ฅผ ์ฝ๋Š”๋‹ค. ์ฝ์€ ์ž๋ฃŒ์˜ byte ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

int read(byte b[ ])

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ b[ ] ํฌ๊ธฐ์˜ ์ž๋ฃŒ๋ฅผ b[ ]์— ์ฝ๋Š”๋‹ค. ์ฝ์€ ์ž๋ฃŒ์˜ byte ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

int read(byte b[ ], int off, int len)

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ€ํ„ฐ b[ ] ํฌ๊ธฐ์˜ ์ž๋ฃŒ๋ฅผ b[ ]์˜ off ๋ณ€์ˆ˜ ์œ„์น˜๋กœ๋ถ€ํ„ฐ ์ €์žฅํ•˜๋ฉฐ len๋งŒํผ ์ฝ๋Š”๋‹ค. ์ฝ์€ ์ž๋ฃŒ์˜ byte ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

void close( )

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐ๋œ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ซ๋Š”๋‹ค.

(์˜ˆ : FileInputStream์ธ ๊ฒฝ์šฐ ํŒŒ์ผ ๋‹ซ์Œ)

โ€‹

โ€‹

โ€‹

*FileInputStream

FileInputStream์€ ํŒŒ์ผ์—์„œ byte ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค์ด๋‹ค. ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ŠคํŠธ๋ฆผ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

์ƒ์„ฑ์ž

์„ค๋ช…

FileInputStream(String name)

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

FileInputStream(File f)

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

โ€‹

โ€‹

FileInputStreamTest1.java

package stream.inputstream;

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

public class FileInputStreamTest1 {
	public static void main(String[] args) {
		FileInputStream fis = null;

		try {
			fis = new FileInputStream("input.txt"); // input.txt ํŒŒ์ผ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
			System.out.println((char)fis.read());
			System.out.println((char)fis.read());
			System.out.println((char)fis.read());
		} catch (IOException e) {
			System.out.println(e);
		} finally {
			try {
				fis.close(); // ์—ด๋ฆฐ ์ŠคํŠธ๋ฆผ์€ finally ๋ธ”๋ก์—์„œ ๋‹ซ์Œ
			} catch (IOException e) {
				System.out.println(e);
			} catch (NullPointerException e) { // ์ŠคํŠธ๋ฆผ์ด null์ธ ๊ฒฝ์šฐ
				System.out.println(e);
			}
		}
		System.out.println("end");
	}
}

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

โ€‹

โ€‹

โ€‹โ€‹

-ํŒŒ์ผ์—์„œ ์ž๋ฃŒ ์ฝ๊ธฐ

โ€‹

1. input.txt๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

โ€‹

โ€‹

2. ABC๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

โ€‹

โ€‹

3. FileInputStreamTest1 ํด๋ž˜์Šค๋กœ ๋Œ์•„๊ฐ€์„œ ๋‹ค์‹œ ์‹คํ–‰์‹œ์ผœ๋ณธ๋‹ค.

์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋จ

 

โ€‹

4. ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ char ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

char ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ๊ฐ ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

โ€‹

โ€‹

-ํŒŒ์ผ ๋๊นŒ์ง€ ์ฝ๊ธฐ

โ€‹

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")) {
			int i;
			while ((i = fis.read()) != -1) { // i ๊ฐ’์ด -1์ด ์•„๋‹Œ ๋™์•ˆ read() ๋ฉ”์„œ๋“œ๋กœ ํ•œ ๋ฐ”์ดํŠธ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ฝ์Œ
				System.out.println((char) i);
			}
			System.out.println("end");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

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

โ€‹

 

โ€‹

-int read(byte[] b) ๋ฉ”์„œ๋“œ๋กœ ์ฝ๊ธฐ

์ž๋ฃŒ๋ฅผ read( ) ๋ฉ”์„œ๋“œ๋กœ ํ•œ ๋ฐ”์ดํŠธ์”ฉ ์ฝ๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ๊บผ๋ฒˆ์— ๋งŽ์ด ์ฝ์œผ๋ฉด ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. read(byte[ ] b) ๋ฉ”์„œ๋“œ๋Š” ์„ ์–ธํ•œ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋งŒํผ ํ•œ๊บผ๋ฒˆ์— ์ž๋ฃŒ๋ฅผ ์ฝ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ์–ด ๋“ค์ธ ์ž๋ฃŒ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

โ€‹

1. input2.txt๋ฅผ ๋งŒ๋“ค๊ณ  'A~Z'๊นŒ์ง€ ์ž…๋ ฅํ•œ ํ›„ ์ €์žฅํ•œ๋‹ค.

โ€‹

โ€‹

2. byte ๋ฐฐ์—ด๋กœ ์ฝ๋Š” ์†Œ์Šค์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ

package stream.inputstream;

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

public class FileInputStreamTest3 {
	public static void main(String[] args) {
		try (FileInputStream fis = new FileInputStream("input2.txt")) {
			byte[] bs = new byte[10];
			int i;
			while ((i = fis.read(bs)) != -1) {
				for (byte b : bs) { // byte ๋ฐฐ์—ด๋กœ ์ฝ์Œ
					System.out.print((char)b);
				}
				System.out.println(": " + i + "๋ฐ”์ดํŠธ ์ฝ์Œ");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("end");
	}
}

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

โ€‹

โ€‹

โ€‹

-์ „์ฒด ๋ฐฐ์—ด์„ ์ถœ๋ ฅํ•˜์ง€์•Š๊ณ  ์ž…๋ ฅํ•œ byte ์ˆ˜๋งŒํผ, ์ฆ‰ i ๊ฐœ์ˆ˜๋งŒํผ ์ถœ๋ ฅํ•˜๋„๋ก ํ•  ๋•Œ

package stream.inputstream;

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

public class FileInputStreamTest3 {
	public static void main(String[] args) {
		try (FileInputStream fis = new FileInputStream("input2.txt")) {
			byte[] bs = new byte[10];
			int i;
			while ((i = fis.read(bs)) != -1) {
				for (int k = 0; k < i; k++) { // ์ž…๋ ฅํ•œ byte ์ˆ˜๋งŒํผ ์ถœ๋ ฅ
					System.out.print((char)bs[k]);
				}
				System.out.println(": " + i + "๋ฐ”์ดํŠธ ์ฝ์Œ");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("end");
	}
}

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

โ€‹

โ€‹

โ€‹

*OutputStream

byte ๋‹จ์œ„๋กœ ์“ฐ๋Š” ์ŠคํŠธ๋ฆผ ์ค‘ ์ตœ์ƒ์œ„ ์ŠคํŠธ๋ฆผ์ด๋‹ค. ์ž๋ฃŒ์˜ ์ถœ๋ ฅ ๋Œ€์ƒ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์„ ์ œ๊ณตํ•œ๋‹ค.

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

์„ค๋ช…

FileOutputStream

๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ํŒŒ์ผ์— ์ž๋ฃŒ๋ฅผ ์“ด๋‹ค.

ByteArrayOutputStream

byte ๋ฐฐ์—ด์— ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์“ด๋‹ค.

FilterOutputStream

๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์—์„œ ์ž๋ฃŒ๋ฅผ ์“ธ ๋•Œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์˜ ์ƒ์œ„ ํด๋ž˜์Šค์ด๋‹ค.

โ€‹

OutputStream์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋ฉ”์„œ๋“œ

์„ค๋ช…

void write(int b)

ํ•œ ๋ฐ”์ดํŠธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

void write(byte[ ] b)

b[ ] ๋ฐฐ์—ด์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

void write(byte b[ ], int off, int len)

b[ ] ๋ฐฐ์—ด์— ์žˆ๋Š” ์ž๋ฃŒ์˜ off ์œ„์น˜๋ถ€ํ„ฐ len ๊ฐœ์ˆ˜๋งŒํผ ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

void flush( )

์ถœ๋ ฅ์„ ์œ„ํ•ด ์ž ์‹œ ์ž๋ฃŒ๊ฐ€ ๋จธ๋ฌด๋ฅด๋Š” ์ถœ๋ ฅ ๋ฒ„ํผ๋ฅผ ๊ฐ•์ œ๋กœ ๋น„์›Œ ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

void close( )

์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ๊ณผ ์—ฐ๊ฒฐ๋œ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ซ๋Š”๋‹ค. ์ถœ๋ ฅ ๋ฒ„ํผ๊ฐ€ ๋น„์›Œ์ง„๋‹ค.

(์˜ˆ : FileOutputStream์ธ ๊ฒฝ์šฐ ํŒŒ์ผ ๋‹ซ์Œ)

โ€‹

โ€‹

โ€‹โ€‹

*FileOutputStream

ํŒŒ์ผ์— byte ๋‹จ์œ„ ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ด๋‹ค.

OutputStream์„ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

์ƒ์„ฑ์ž

์„ค๋ช…

FileOutputStream(String name)

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

FileOutputStream(String name,

boolean append)

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

FileOutputStream(File f, )

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

FileOutputStream(Filen f,

boolean append)

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

์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ ํŒŒ์ผ์ด ๊ฒฝ๋กœ์— ์—†์œผ๋ฉด FileOutputStream์€ ํŒŒ์ผ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ๋‹ค. FileOutStream์„ ์‚ฌ์šฉํ•ด ํŒŒ์ผ์— ์ž๋ฃŒ๋ฅผ ์“ธ ๋•Œ ๊ธฐ์กด ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์žˆ๋”๋ผ๋„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ์“ธ์ง€(overwrite), ์•„๋‹ˆ๋ฉด ๊ธฐ์กด ๋‚ด์šฉ ๋งจ ๋’ค์— ์—ฐ๊ฒฐํ•ด์„œ ์“ธ ๊ฒƒ์ธ์ง€(append) ์—ฌ๋ถ€๋ฅผ FileOutStream ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค. ์ด ๊ฐ’์ด append ๋ณ€์ˆ˜์ด๋‹ค. ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ์ž์—์„œ append ๊ฐ’์€ ๋””ํดํŠธ๊ฐ€ false์ด๋‹ค. ๊ธฐ์กด์— ์“ฐ์—ฌ ์žˆ๋Š” ๋‚ด์šฉ์ด ์žˆ๋”๋ผ๋„ ์ƒˆ๋กœ ์“ด๋‹ค. ๊ธฐ์กด ํŒŒ์ผ ๋‚ด์šฉ์— ์ด์–ด์„œ ์จ์•ผ ํ•œ๋‹ค๋ฉด append ๊ฐ’์„ ๋ฐ˜๋“œ์‹œ true๋กœ ์ง€์ •ํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹โ€‹

-write( ) ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

โ€‹

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

โ€‹

2.

package stream.outputstream;

import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest {
	public static void main(String[] args) {
		try (FileOutputStream fos = new FileOutputStream("output.txt")) {
			fos.write(65);
			fos.write(66);
			fos.write(67); // FileOutputStream์€ ํŒŒ์ผ์— ์ˆซ์ž๋ฅผ ์“ฐ๋ฉด ํ•ด๋‹นํ•˜๋Š” ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋จ
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
	}
}

 

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

โ€‹

โ€‹

โ€‹โ€‹

 

-write(byte[ ] b) ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

์ถœ๋ ฅ๋„ ์ž…๋ ฅ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ถœ๋ ฅํ•˜๋ฉด ํšจ์œจ์ ์ผ๋ฟ๋”๋Ÿฌ ์‹คํ–‰ ์‹œ๊ฐ„๋„ ์ค„์–ด๋“ ๋‹ค. ๋”ฐ๋ผ์„œ byte ๋ฐฐ์—ด์„ ํ™œ์šฉํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. write(byte[ ] b) ๋ฉ”์„œ๋“œ๋Š” byte ๋ฐฐ์—ด์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ์ถœ๋ ฅํ•œ๋‹ค.

โ€‹

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

โ€‹

2.

package stream.outputstream;

import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest2 {
	public static void main(String[] args) {
		try (FileOutputStream fos = new FileOutputStream("output2.txt", true)) {
			byte[] bs = new byte[26];
			byte data = 65; // 'A'์˜ ์•„์Šคํ‚ค ๊ฐ’
			for (int i = 0; i < bs.length; i++) { // A๋ถ€ํ„ฐ Z๊นŒ์ง€ ๋ฐฐ์—ด์— ๋„ฃ๊ธฐ
				bs[i] = data;
				data++;
			}
			fos.write(bs); // ๋ฐฐ์—ด์„ ํ•œ๊บผ๋ฒˆ์— ์ถœ๋ ฅ
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
	}
}

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

โ€‹

โ€‹

โ€‹

โ€‹

-write(byte[ ] b, int off, int len) ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ

write(byte[ ] b, int off, int len) ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์ „์ฒด ์ž๋ฃŒ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด์˜ off ์œ„์น˜๋ถ€ํ„ฐ len ๊ธธ์ด๋งŒํผ ์ถœ๋ ฅํ•œ๋‹ค.

โ€‹โ€‹

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

โ€‹

2.

package stream.outputstream;

import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest3 {
	public static void main(String[] args) {
		try (FileOutputStream fos = new FileOutputStream("output3.txt", true)) {
			byte[] bs = new byte[26];
			byte data = 65; // 'A'์˜ ์•„์Šคํ‚ค ๊ฐ’
			for (int i = 0; i < bs.length; i++) {
				bs[i] = data;
				data++;
			}
			fos.write(bs, 2, 10); // ๋ฐฐ์—ด์˜ ์„ธ ๋ฒˆ์งธ ์œ„์น˜๋ถ€ํ„ฐ 10๊ฐœ ๋ฐ”์ดํŠธ ์ถœ๋ ฅ
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("์ถœ๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
	}
}

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

โ€‹

โ€‹

โ€‹

โ€‹

*flush( ) ๋ฉ”์„œ๋“œ์™€ close( ) ๋ฉ”์„œ๋“œ

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

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€