๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
studies/Back-end

[Java] java.io.File ํŠน์ • ํŒŒ์ผ๋งŒ ํŒŒ์ผ ์ƒ์„ฑ ์•ˆ๋  ๋•Œ ํ•ด๊ฒฐ - ๋…ผ๋ฆฌ์˜ค๋ฅ˜ ๊ณ ์น˜๊ธฐ

by Vada Kim 2020. 7. 29.
728x90
๋ฐ˜์‘ํ˜•

ํ•œ ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด ํŠน์ • ํด๋ž˜์Šค ์† ํŒŒ์ผ๋งŒ ์ƒ์„ฑ์ด ์•ˆ๋˜๋ฉด ํ”„๋กœ์ ํŠธ ํด๋”์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ์ž˜๋ชป ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ž‘์„ฑํ•œ๊ฑฐ๋‹ค.

 

 

โ€ป์•„๋ž˜ ๋‚ด์šฉ์€ ๋ชจ๋‘ ํ•„์ž์˜ ์ง€์‹+๋‡Œํ”ผ์…œ์ด๋‹ˆ 100% ์‹ ๋ขฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

 

 

์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์™”๋‹ค. ์ด๋ฏธ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฐ ์ƒํƒœ์˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„, ๊ทธ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์–ด๋“ค์—ฌ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋˜๋‹ค๋ฅธ ํŒŒ์ผ์— ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ๋‚ด์šฉ๋ณต์‚ฌ ๋ชฉ์ ์˜ ์ฝ”๋“œ์ด๋‹ค. 

์ด ์ฝ”๋“œ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

์šฐ์„ , ์ž๋ฐ”์˜ File์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉด

  • new File() ์€ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ด๋‹ค. 
  • ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์ด๋ฉด ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

์•„๋ž˜ 10ํ–‰์—์„  ํ•ด๋‹น ํŒŒ์ผ์ด ์ด๋ฏธ ์กด์žฌํ•  ๊ฒƒ์ด๋ž€ ๊ฐ€์ •ํ•˜์— ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„ ๊ณง๋ฐ”๋กœ 14ํ–‰์—์„œ ํŒŒ์ผ์„ ์ฝ์–ด๋“ค์ด๋Š”๋ฐ, ๋งŒ์•ฝ test.txt ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒƒ์ด๋‹ค.

 

public class FileReaderEx {
    public static void main(String[] args) {
        String line = "";
        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ(์ด๋ฏธ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)
        File file1 = new File("test.txt");
        
        //test.txt ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fr = new FileReader(file1);
        } catch (FileNotFoundException e2) {
            e2.printStackTrace();
        }
        br = new BufferedReader(fr);
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ
        File file2 = new File("print.txt");

        //print.txt ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fw = new FileWriter(file2, true);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        bw = new BufferedWriter(fw);
        
        //test.txt ํŒŒ์ผ์—์„œ ์ฝ์–ด์˜จ ๋‚ด์šฉ์„ print.txt์— ์ž‘์„ฑ
        try {
            while(true) {
                line = br.readLine();
                if(line==null) break;
                bw.write(line);
                bw.newLine();
            }
            bw.flush();
            br.close(); bw.close();
            fr.close(); fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
โ€‹

 

java.io.FileNotFoundException: test.txt (์ง€์ •๋œ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค)

 

 

์ปดํŒŒ์ผ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์•˜๋‹ค.

  • test.txt ํŒŒ์ผ ๋ฏธ์กด์žฌ ์‹œ -> ์˜ค๋ฅ˜
  • test.txt ํŒŒ์ผ ์กด์žฌ + ๋‚ด์šฉ ์—†์„ ์‹œ -> ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰
  • 10์ค„์˜ ์ฝ”๋“œ๋งŒ ์‹คํ–‰(=ํŒŒ์ผ๋งŒ ์ƒ์„ฑ) -> ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰๋˜๋‚˜ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ

์œ„ ์ฝ”๋“œ ์‹คํ–‰ ์ „ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋‚˜ ๊ฐœ๋ฐœ ํˆด ๋‚ด์—์„œ ์ง์ ‘ test.txt๋ฅผ ์ƒ์„ฑํ•œ ํ›„(๋‚ด์šฉX) ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋ฐ

test.txt ํŒŒ์ผ์„ ์ฝ”๋“œ ๋‚ด์—์„œ ์ƒ์„ฑํ•œ ํ›„(์—ญ์‹œ ๋‚ด์šฉX) ์‹คํ–‰ํ•˜๋ฉด ์™œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š”๊ฐ€?

์•„๋งˆ ๊ทธ ์ด์œ ๋Š” ๋‚ด๊ฐ€ ์œ„์—์„œ 'new File() ์€ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉ์ ์ด๋‹ค'๋ผ๊ณ  ํ•˜์˜€๋Š”๋ฐ, ์ด๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์ง€ ์•Š๋‚˜ ์‹ถ๋‹ค.

 

์ฝ”๋“œ์—์„œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ ์ž ํ• ๋•Œ, ์‹ค์กดํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋‚ด์—์„œ ๊ณง๋ฐ”๋กœ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๊ฒƒ์„ ๊ฐ€์ƒ์˜ ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์‹ค์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์œ„ ์ฝ”๋“œ์—์„  test.txt ํŒŒ์ผ์ด ์‹ค์กดํ•˜์ง€ ์•Š์„๋•Œ ํ•ด๋‹น ํŒŒ์ผ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ณง๋ฐ”๋กœ ์ฝ์–ด๋“ค์ด๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ€์ƒ์˜ ํŒŒ์ผ์ด๋ผ ์ƒ๊ฐํ•˜์—ฌ '์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ'์ด๋ผ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒƒ์ด๋‹ค.

 

 

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•1. 14-21์ค„

ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๊ณง๋ฐ”๋กœ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์ค€๋‹ค. ํ•ด๋‹น ํŒŒ์ผ๊ณผ ๊ทธ ๋‚ด์šฉ์ด ์ด๋ฏธ ์กด์žฌํ•  ๊ฒฝ์šฐ๋ผ๋„ ๊ดœ์ฐฎ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์— ์ ํ˜€์žˆ์„(๋˜๋Š” ์ ํ˜€์žˆ์–ด์•ผํ• ) ๋‚ด์šฉ์„ ์ž‘์„ฑ์‹œํ‚ค๋˜ ๋ฎ์–ด์“ฐ๊ธฐํ•˜๋„๋ก(๊ฒฐ๊ตญ ์ฝ”๋“œ ์‹คํ–‰์ „๊ณผ test.txt ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค) FileWriter์ƒ์„ฑ ์‹œ ๋‚ด์šฉ์ถ”๊ฐ€์—ฌ๋ถ€๋ฅผ false๋กœ ์ง€์ •ํ•œ๋‹ค.

 

import java.io.*;

public class FileReaderEx {
    public static void main(String[] args) {
        String line = "";
        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ(์ด๋ฏธ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)
        File file1 = new File("test.txt");
        
        //test.txt ๋‚ด์šฉ ์ž‘์„ฑ
        try {
            fw = new FileWriter(file1, false);
            fw.write("What should I do is always study.\nhehe");
            fw.flush();
        } catch (IOException e3) {
            e3.printStackTrace();
        }
        
        //test.txt ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fr = new FileReader(file1);
        } catch (FileNotFoundException e2) {
            e2.printStackTrace();
        }
        br = new BufferedReader(fr);
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ
        File file2 = new File("print.txt");

        //print.txt ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fw = new FileWriter(file2, true);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        bw = new BufferedWriter(fw);
        
        //test.txt ํŒŒ์ผ์—์„œ ์ฝ์–ด์˜จ ๋‚ด์šฉ์„ print.txt์— ์ž‘์„ฑ
        try {
            while(true) {
                line = br.readLine();
                if(line==null) break;
                bw.write(line);
                bw.newLine();
            }
            bw.flush();
            br.close(); bw.close();
            fr.close(); fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}โ€‹

 

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•2. 14-23์ค„

๋ฐฉ๋ฒ•1๊ณผ ๋งฅ๋ฝ์€ ๋น„์Šทํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒ ์ด๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์€ ์ฝ”๋“œ์ด๋‹ค. test.txt ๋‚ด์šฉ์ถ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋• ์‹คํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

import java.io.*;

public class FileReaderEx {
    public static void main(String[] args) {
        String line = "";
        FileReader fr = null;
        BufferedReader br = null;
        FileWriter fw = null;
        BufferedWriter bw = null;
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ(์ด๋ฏธ ์กด์žฌํ•  ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)
        File file1 = new File("test.txt");
        
        //test.txt ๋ฏธ์กด์žฌ์‹œ ์ƒˆ๋กœ ์ž‘์„ฑ
        if(!file1.exists()) {
            try {
                fw = new FileWriter(file1);
                fw.write("What should I do is always study.\nhehe");
                fw.flush();
            } catch (IOException e3) {
                e3.printStackTrace();
            }
        }
        
        //test.txt ํŒŒ์ผ ๋‚ด์šฉ์„ ์ฝ์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fr = new FileReader(file1);
        } catch (FileNotFoundException e2) {
            e2.printStackTrace();
        }
        br = new BufferedReader(fr);
        
        //์ƒ์„ฑํ•  ํŒŒ์ผ
        File file2 = new File("print.txt");

        //print.txt ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๋Š” ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
        try {
            fw = new FileWriter(file2, true);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        bw = new BufferedWriter(fw);
        
        //test.txt ํŒŒ์ผ์—์„œ ์ฝ์–ด์˜จ ๋‚ด์šฉ์„ print.txt์— ์ž‘์„ฑ
        try {
            while(true) {
                line = br.readLine();
                if(line==null) break;
                bw.write(line);
                bw.newLine();
            }
            bw.flush();
            br.close(); bw.close();
            fr.close(); fw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}โ€‹

 

๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•์ด์ง€๋งŒ ๋‚˜์ฒ˜๋Ÿผ ํ—ค๋งธ์„ ์‚ฌ๋žŒ์ด ๋ถ„๋ช…์ด ์žˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ด๋‹ค.

728x90
๋ฐ˜์‘ํ˜•