๐Ÿ“Œ Java ํŒŒ์ผ ์ž…์ถœ๋ ฅ (I/O) ์ •๋ฆฌ: ๋‹ค์–‘ํ•œ ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ํ™œ์šฉ

My Pale Blue Dotยท2025๋…„ 3์›” 17์ผ
0

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
22/35
post-thumbnail

๐Ÿ“… ๋‚ ์งœ: 2025-03-17


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

Java์˜ ํŒŒ์ผ ์ž…์ถœ๋ ฅ(File I/O) ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ์ •๋ฆฌ์—์„œ๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ, ๋ฌธ์ž ์ŠคํŠธ๋ฆผ, ๊ฐ์ฒด ์ง๋ ฌํ™” ๋“ฑ์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ ๋ฌธ์ž ๋ณ€ํ™˜ ์ŠคํŠธ๋ฆผ (Character Convert Stream)

โœ… ๊ฐœ๋…

  • ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ(InputStream, OutputStream)์€ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ์Œ.
  • InputStreamReader, OutputStreamWriter๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package Ch20;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class C01CharConvertStreamMain {
    public static void main(String[] args) throws Exception {
        InputStream in = new FileInputStream("c:\\IOTEST\\test.txt");
        BufferedInputStream bin = new BufferedInputStream(in);
        InputStreamReader rin = new InputStreamReader(bin);

        while (true) {
            int data = rin.read();
            if (data == -1)
                break;
            System.out.print((char) data);
        }

        rin.close();
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ

Hello, Java!

2๏ธโƒฃ BufferedReader๋ฅผ ์ด์šฉํ•œ ํŒŒ์ผ ์ฝ๊ธฐ

โœ… ๊ฐœ๋…

  • BufferedReader๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํŒŒ์ผ์„ ํ•œ ์ค„ ๋‹จ์œ„๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Œ (readLine() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ).

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package Ch20;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.Reader;

public class C02ReadLineMain {
    public static void main(String[] args) throws Exception {
        Reader in = new FileReader("c:\\IOTEST\\test2.txt");
        BufferedReader bin = new BufferedReader(in);

        while (true) {
            String data = bin.readLine();
            if (data == null)
                break;
            System.out.println(data);
        }

        bin.close();
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ (test2.txt์˜ ๋‚ด์šฉ์ด ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒฝ์šฐ)

HELLO
HELLO
HELLO

3๏ธโƒฃ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ž…์ถœ๋ ฅ (DataInputStream, DataOutputStream)

โœ… ๊ฐœ๋…

  • DataOutputStream, DataInputStream์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํŒŒ์ผ์— ์ €์žฅ ๋ฐ ์ฝ๊ธฐ ๊ฐ€๋Šฅ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package Ch20;

import java.io.DataInputStream;
import java.io.FileInputStream;

public class C03DataInoutStreamMain {
    public static void main(String[] args) throws Exception {
        FileInputStream in = new FileInputStream("c:\\IOTEST\\test3.txt");
        DataInputStream din = new DataInputStream(in);

        String name = din.readUTF();
        double score = din.readDouble();
        int value = din.readInt();

        System.out.println("์ด๋ฆ„: " + name);
        System.out.println("์ ์ˆ˜: " + score);
        System.out.println("์ˆซ์ž: " + value);

        din.close();
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ (test3.txt์—์„œ ๊ฐ์ฒด ๋ณต์›)

์ด๋ฆ„: ํ™๊ธธ๋™
์ ์ˆ˜: 95.5
์ˆซ์ž: 100

4๏ธโƒฃ ๊ฐ์ฒด ์ง๋ ฌํ™” (ObjectOutputStream, ObjectInputStream)

โœ… ๊ฐœ๋…

  • Java์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜(์ง๋ ฌํ™”).
  • ์ง๋ ฌํ™”ํ•˜๋ ค๋ฉด Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ (๊ฐ์ฒด ์ €์žฅ - ์ง๋ ฌํ™”)

package Ch20;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;

class Board implements Serializable {
    private static final long serialVersionUID = 1L;
    private int bno;
    private String title;
    private String content;
    private String writer;
    private Date date;

    public Board(int bno, String title, String content, String writer, Date date) {
        this.bno = bno;
        this.title = title;
        this.content = content;
        this.writer = writer;
        this.date = date;
    }

    @Override
    public String toString() {
        return "Board [bno=" + bno + ", title=" + title + ", content=" + content +
                ", writer=" + writer + ", date=" + date + "]";
    }
}

public class C04ObjectStreamMain {
    public static void main(String[] args) throws Exception {
        FileOutputStream out = new FileOutputStream("c:\\tmp_io\\board.db");
        ObjectOutputStream oout = new ObjectOutputStream(out);

        oout.writeObject(new Board(1, "์ œ๋ชฉ1", "๋‚ด์šฉ1", "ํ™๊ธธ๋™", new Date()));
        oout.writeObject(new Board(2, "์ œ๋ชฉ2", "๋‚ด์šฉ2", "๋‚จ๊ธธ๋™", new Date()));

        oout.flush();
        oout.close();

        System.out.println("๊ฐ์ฒด๊ฐ€ ํŒŒ์ผ์— ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
    }
}

โœ… ์˜ˆ์ œ ์ฝ”๋“œ (๊ฐ์ฒด ๋ณต์› - ์—ญ์ง๋ ฌํ™”)

package Ch20;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class C04ObjectStreamRead {
    public static void main(String[] args) throws Exception {
        FileInputStream in = new FileInputStream("c:\\tmp_io\\board.db");
        ObjectInputStream oin = new ObjectInputStream(in);

        Board board1 = (Board) oin.readObject();
        Board board2 = (Board) oin.readObject();

        System.out.println(board1);
        System.out.println(board2);

        oin.close();
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ (board.db์—์„œ ๊ฐ์ฒด ๋ณต์›)

Board [bno=1, title=์ œ๋ชฉ1, content=๋‚ด์šฉ1, writer=ํ™๊ธธ๋™, date=Mon Mar 17 12:34:56 KST 2025]
Board [bno=2, title=์ œ๋ชฉ2, content=๋‚ด์šฉ2, writer=๋‚จ๊ธธ๋™, date=Mon Mar 17 12:34:56 KST 2025]

๐Ÿ”ฅ ์ •๋ฆฌ

์ŠคํŠธ๋ฆผ ์ข…๋ฅ˜์‚ฌ์šฉ ๋ชฉ์ ์ฃผ์š” ํด๋ž˜์Šค
๋ฌธ์ž ๋ณ€ํ™˜ ์ŠคํŠธ๋ฆผ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜InputStreamReader, OutputStreamWriter
๋ผ์ธ ๋‹จ์œ„ ์ฝ๊ธฐํ•œ ์ค„์”ฉ ์ฝ๊ธฐBufferedReader (readLine())
๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ž…์ถœ๋ ฅint, double ๋“ฑ์˜ ๊ฐ’์„ ํŒŒ์ผ์— ์ €์žฅDataOutputStream, DataInputStream
๊ฐ์ฒด ์ง๋ ฌํ™”๊ฐ์ฒด๋ฅผ ํŒŒ์ผ์— ์ €์žฅ ๋ฐ ๋ณต์›ObjectOutputStream, ObjectInputStream

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€