Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ(.txt) - ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ(throws์™€ try-catch) ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ”

[Java] ํŒŒ์ผ ์ž…์ถœ๋ ฅ(.txt) - ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์˜ˆ์™ธ์ฒ˜๋ฆฌ(throws์™€ try-catch)

๋น„๋น„ bibi 2020. 11. 11. 18:10

์ž๋ฐ”์—์„œ ์ž…๋ ฅ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ,
๋˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด ์˜ค๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค.
(๋‚˜๋Š” ๊ฐ€๊ณ„๋ถ€ ๋ฏธ์…˜์„ ํ•˜๋ฉด์„œ ์ด ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•ด์กŒ๋‹ค)

์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” MySQL, ์˜ค๋ผํด์ด๋‚˜ MongoDB๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฒ ์ง€๋งŒ,
๋‚˜์ฒ˜๋Ÿผ ์ž‘์€ ์˜ˆ์ œ๋ฅผ ํ’€๊ฑฐ๋‚˜ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊นŒ์ง€ ์“ธ ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ๋„ ์žˆ๋‹ค.

"์ž๋ฐ” ํŒŒ์ผ ์ž…์ถœ๋ ฅ", "์ž๋ฐ” ํŒŒ์ผ์ €์žฅ" ๋“ฑ์œผ๋กœ ๊ตฌ๊ธ€๋งํ•˜๋‹ˆ txtํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ, ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•ด์„œ ๊ทธ ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค.

 


์ฒ˜์Œ์—๋Š” ์•„๋ž˜ '์ ํ”„ ํˆฌ ํŒŒ์ด์ฌ'์˜ ํŒŒ์ผ์ž…์ถœ๋ ฅ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉฐ ์Šคํ… ๋ฐ”์ด ์Šคํ…์œผ๋กœ ๋”ฐ๋ผํ•ด ๋ณด์•˜๋‹ค.

wikidocs.net/227๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

์œ„ํ‚ค๋…์Šค

์˜จ๋ผ์ธ ์ฑ…์„ ์ œ์ž‘ ๊ณต์œ ํ•˜๋Š” ํ”Œ๋žซํผ ์„œ๋น„์Šค

wikidocs.net

 

 

 

๋‚˜๋Š” ์œ„ ๋งํฌ์—์„œ ์ œ์‹œํ•œ ๋ฐฉ๋ฒ•๋“ค ์ค‘์—์„œ๋„
๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๋ฉด์„œ ์œ ์šฉํ•ด ๋ณด์ด๋Š” ์˜ˆ์ œ๋ฅผ ๊ณจ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ˜•ํ•ด ๋ณด์•˜๋‹ค.

 

์ž๋ฐ” txtํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์ž…๋ ฅ

// 'txt ํŒŒ์ผ ์ž…๋ ฅ(๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ)' ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

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

public class FileWrite {
    public static void main(String[] args) throws IOException{
        // ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด FileWriter ํด๋ž˜์Šค ์‚ฌ์šฉํ•ด fw ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ.
        FileWriter fw = new FileWriter("c:/out.txt");
        // ํŒŒ์ผ์— ๋„ฃ๊ณ  ์‹ถ์€ ๋‚ด์šฉ ์ž‘์„ฑ : .write(๋‚ด์šฉ);
        for(int i=1; i<11; i++) {
            String data = i+" ๋ฒˆ์งธ ๊ณ ์–‘์ด!๐Ÿฑ"+"\r\n";// \r\n์€ ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž์ด๋‹ค.
            fw.write(data);
        }
        fw.close();// ๊ผญ ์‚ฌ์šฉ ํ›„ ๋‹ซ์•„์ฃผ๊ธฐ.

        // ๊ธฐ์กด ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ ์ถ”๊ฐ€ํ•˜๊ธฐ : ํŒŒ์ผ๋ช… ๋’ค์— ์ถ”๊ฐ€๋ชจ๋“œ(append)๋ฅผ true๋กœ ํ•œ๋‹ค.
        FileWriter fw2 = new FileWriter("c:/out.txt", true);
        for(int i=11; i<21; i++) {
            String data = "(์ถ”๊ฐ€)"+i+" ๋ฒˆ์งธ ๊ณ ์–‘์ด!๐Ÿฑ\r\n";
            fw2.write(data);
        }
        fw2.close();
    }

}

(์œ„ ์ฝ”๋“œ์—์„œ)fw์™€ fw2์˜ ์ฐจ์ด??

ํŒŒ์ผ๊ฒฝ๋กœ ๋’ค์— true๊ฐ€ ์žˆ๋ƒ ์—†๋ƒ์˜ ์ฐจ์ด์ด๋‹ค.

true๊ฐ’์€ appendํ•ญ๋ชฉ์„ ์ง€์ •ํ•ด ์ค€ ๊ฒƒ์ธ๋ฐ,
fw2 ์ฒ˜๋Ÿผ append๊ฐ’์ด true์ด๋ฉด ๊ธฐ์กด ๊ฐ’์— ์ด์–ด์„œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด ๋„ฃ๋Š” ๊ฒƒ์ด๊ณ 
fw์ฒ˜๋Ÿผ true๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ๊ฐ’์„ ๋ชจ๋‘ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด ๋„ฃ๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ๋Š” true ์—†์ด ๋„ฃ๊ณ ,
๊ธฐ์กด ๋ฐ์ดํ„ฐ์— ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” true๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ๋„ฃ์œผ๋ฉด ๋˜๊ฒ ๋‹ค.

 


 

์ž๋ฐ” txtํŒŒ์ผ์— ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ

// 'txt ํŒŒ์ผ ์ถœ๋ ฅ(๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๊ธฐ)' ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

import java.io.BufferedReader;
import java.io.FileReader;
// BufferedReader์™€ FileReader๋ฅผ ์กฐํ•ฉํ•ด ์‚ฌ์šฉํ•˜๋ฉด txtํŒŒ์ผ์„ ํ•œ ์ค„์”ฉ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
import java.io.IOException;


public class FileRead {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new FileReader("c:/out.txt"));
        while (true) { // .txt ํŒŒ์ผ์„ ๋ผ์ธ ๋‹จ์œ„๋กœ ์ฝ์–ด์™€์„œ, ๋ผ์ธ ๋‹จ์œ„๋กœ ์ถœ๋ ฅ.
            String line = bufferedReader.readLine(); // .readline()๋ฉ”์†Œ๋“œ : ๋” ์ด์ƒ ์ฝ์„ ๋ผ์ธ์ด ์—†์œผ๋ฉด null์„ ๋ฆฌํ„ดํ•จ.
            if (line == null) break; // ๋” ์ด์ƒ ์ฝ์„ ๋ผ์ธ์ด ์—†์œผ๋ฉด while๋ฌธ์„ ๋น ์ ธ๋‚˜๊ฐ.
            System.out.println(line);
        }
        bufferedReader.close();
    }
}

์ฐธ๊ณ ) ํ…์ŠคํŠธ ํŒŒ์ผ์˜ ๋งจ ์ฒซ ์ค„๋งŒ ์ฝ์„ ๋•Œ๋Š”
while๋ฌธ ์—†์ด String line = bufferedReader.readLine(); ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 


์ž๋ฐ” txtํŒŒ์ผ ์ฝ์–ด์˜ฌ ๋•Œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ - throws ์™€ try-catch์˜ ์ฐจ์ด

yeolco.tistory.com/106 ์—์„œ ๋„์›€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

txtํŒŒ์ผ์„ ์ฝ์–ด์˜ฌ ๋•Œ๋Š” ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
throw์™€ try-catch ๋‘˜ ๋‹ค ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธํ„ฐ๋„ท์—์„œ ์ฐพ์•„๋ณธ ๋Œ€๋ถ€๋ถ„์˜ ์˜ˆ์ œ๋Š” throws IOExpection ์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ๋‘์—ˆ๋‹ค. (์œ„์˜ ์˜ˆ์ œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
(throws ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ : ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์†Œ๊ด„ํ˜ธ์™€ ์ค‘๊ด„ํ˜ธ ์‚ฌ์ด.
์œ„ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์†Œ๊ด„ํ˜ธ์™€ ์ค‘๊ด„ํ˜ธ ์‚ฌ์ด์— throws IOExpection์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.)

๋‚˜๋„ ํ…Œ์ŠคํŠธ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” throws๋กœ ์ฒ˜๋ฆฌํ–ˆ์„ ๋•Œ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•˜์˜€๋Š”๋ฐ,
๊ฐ€๊ณ„๋ถ€ ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค๋ฉฐ throws๋ฅผ ์“ฐ๋‹ˆ ์—ฐ๊ด€๋œ ๋ฉ”์„œ๋“œ๋“ค์ด ์ฃ„๋‹ค ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.
์ฆ‰ ๋‚˜์ฒ˜๋Ÿผ ๊ธฐ์กด ์ฝ”๋“œ์˜ ํ•œ ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ,
throw๋ฅผ ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋‹ˆ ๊ณ„์† ๋‹ค์Œ ๋ฉ”์„œ๋“œ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜์–ด ๊ณ„์† ์—๋Ÿฌ๊ฐ€ ์ƒ๊ฒผ๋‹ค;;

์ด์ƒํ•ด์„œ ๊ตฌ๊ธ€๋งํ•ด ๋ณด๋‹ˆ throws๋Š” "๋‹ค์Œ์— ์ฒ˜๋ฆฌ๋˜๋Š” ๋กœ์ง์ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ํ•˜๋Š”" ๊ตฌ๋ฌธ์ด์—ˆ๋‹ค. ;;
(ํ•œ๋งˆ๋””๋กœ ๋– ๋„˜๊ธฐ๊ธฐ๋‹ค)

๊ฒฐ๋ก )
ํ…Œ์ŠคํŠธ ์˜ˆ์ œ์ฒ˜๋Ÿผ ๋‹จ๋… ๋กœ์ง์œผ๋กœ ๊ธฐ๋Šฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ throws๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ,
์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ์™€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ
ํŒŒ์ผ์„ ์ฝ๋Š”/์“ฐ๋Š” ๋ฉ”์„œ๋“œ์™€ ์—ฐ๊ด€๋œ ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•˜๊ฒŒ ๋œ๋‹ค.
(ํ•œ๋งˆ๋””๋กœ ๋ฌดํ•œ throws..)
๋”ฐ๋ผ์„œ ์ด๋Ÿด ๋•Œ๋Š” throws๋ณด๋‹ค๋Š” try-catch๋ฌธ์œผ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด

try {
	//reader ๋˜๋Š” writer ์ฝ”๋“œ๋“ค
} catch (IOException e) {
	e.printStackTrace();
}

์ด๋Ÿฐ ๊ตฌ๋ฌธ์„ ์•Œ์•„๋‚ด์–ด ์ ์šฉํ•˜๋‹ˆ, throws๋ณด๋‹ค ๊น”๋”ํ•˜๊ฒŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.

 


๋” ๊ณต๋ถ€ํ•  ๊ฒƒ

โœ” ์˜ˆ์™ธ์ฒ˜๋ฆฌ
: wikidocs.net/229 ๋ฅผ ํ†ตํ•ด ๋” ๊ณต๋ถ€ํ•˜์ž.

โœ”catch์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•  ๋•Œ ์“ฐ๋Š”..
-e๋Š” ๋ฌด์—‡์ธ๊ฐ€?
-e.printStackTrace();๋Š” ๋ฌด์Šจ ๊ตฌ๋ฌธ์ธ๊ฐ€?

โœ” try-catch๋ฌธ์— ๋Œ€ํ•œ ๊ฐœ๋… ๊ณต๋ถ€ํ•˜๊ธฐ.