πŸ’» 곡뢀 기둝/β˜• Java

Java | 파일 읽고 μ“°λŠ” λ©”λͺ¨μž₯

  • -

파일의 읽고 쓰기에 λŒ€ν•œ κΈ°λŠ₯을 λ°°μ› λ‹€.

  • ν…μŠ€νŠΈ 파일의 λ‚΄μš© 좜λ ₯ν•˜κΈ°
  • μ—¬λŸ¬ μ€„λ‘œ 된 ν…μŠ€νŠΈ 파일의 λ‚΄μš© 좜λ ₯ν•˜κΈ°
  • ν…μŠ€νŠΈ 파일둜 μ €μž₯ν•˜κΈ°
  • ν‚€λ³΄λ“œ μž…λ ₯을 ν…μŠ€νŠΈ 파일둜 μ €μž₯ν•˜κΈ°
  • 간단 λ©”λͺ¨μž₯ λ§Œλ“€μ–΄λ³΄κΈ°

 

따라 μΉ˜λ©΄μ„œ λ°°μš°λ‹ˆ μž¬λ―ΈλŠ” μžˆλŠ”λ°,

μΉ˜λ©΄μ„œλ„ "μ–΄λ–»κ²Œ 이런 둜직으둜 μƒκ°ν•˜κ³  λ§Œλ“€ 수 μžˆμ§€?" λΌλŠ” 생각을 ν•˜κ²Œ λœλ‹€.

λͺ¨λ“  κΈ°λŠ₯의 λ‘œμ§μ„ μƒκ°ν•˜λ©΄μ„œ λ°°μ› λ˜ 문법을 ν™œμš©ν•œ 것일텐데..

술술 λ‘œμ§μ„ λ§ν•˜λ©΄μ„œ μž‘μ„±ν•˜μ‹œλŠ” κ°•μ‚¬λ‹˜μ„ 보면 정말 λŒ€λ‹¨ν•˜λ‹€λŠ” 생각이 λ“ λ‹€..

 

 

 

 

μ¦κΈ°λŠ” μžκ°€ 되고 μ‹Άλ‹€..

 


 

간단 λ©”λͺ¨μž₯ κ΅¬ν˜„

μ½”λ“œ μ™„μ„±

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Notepad {
    public static void main(String[] args) {
        // λ…ΈνŠΈ κΈ°λŠ₯ ν•„μš”
        Scanner scanner = new Scanner(System.in);

        // 읽기와 μ“°κΈ°λ₯Ό λ°˜λ³΅ν•˜κΈ° μœ„ν•œ while 반볡문
        while (true) {
            System.out.println("μ›ν•˜λŠ” μž‘μ—… 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.");
            System.out.println("1. λ©”λͺ¨ 읽기");
            System.out.println("2. μƒˆ λ©”λͺ¨");
            System.out.println("3. μ’…λ£Œ");

            // μž…λ ₯ 번호λ₯Ό μœ μ§€ν•  λ³€μˆ˜ 생성
            int taskNum;

            try {
                // input ν…μŠ€νŠΈλ‘œ μž…λ ₯받을 λ³€μˆ˜
                String input = scanner.nextLine();
                // String 으둜 λ“€μ–΄μ˜¨ taskNum 을 int 둜 λ³€ν™˜
                taskNum = Integer.parseInt(input);
            } catch (NumberFormatException e) {
                // μ‚¬μš©μžκ°€ 잘λͺ»λœ μž…λ ₯을 ν–ˆμ„ 경우 μ•ˆλ‚΄
                System.out.println("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€.");
                // 반볡문의 처음으둜 λŒμ•„κ°€κΈ°
                continue;
            }

            // μ‚¬μš©μžκ°€ μž‘μ—…λ²ˆν˜Έλ₯Ό μž…λ ₯ν–ˆμ„ λ•Œμ˜ κΈ°λŠ₯]
            // taskNum 의 값이 1 일 λ•Œ
            if (taskNum == 1) {
                // 메세지 좜λ ₯
                System.out.println("λ©”λͺ¨ 파일λͺ…을 μž…λ ₯ν•˜μ„Έμš”.");

                // λ©”λͺ¨ 파일λͺ…을 λ°›κΈ° μœ„ν•œ λ³€μˆ˜ fileName
                String fileName = scanner.nextLine();

                // FileInputStream μ„ μ–Έ
                FileInputStream inputStream = null;

                // μ˜ˆμ™Έ 처리λ₯Ό μœ„ν•œ try/catch μ„ μ–Έ
                try {
                    // μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 파일 이름을 inputStream 으둜 인자 전달
                    inputStream = new FileInputStream(fileName);
                } catch (FileNotFoundException e) {
                    // 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” μ•ˆλ‚΄
                    System.out.println("파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
                    // 반볡문의 처음으둜 λŒμ•„κ°€κΈ°
                    continue;
                }

                // 정상적인 읽을 μ€€λΉ„κ°€ 된 μƒνƒœ
                // μž…λ ₯ν•œ 파일 이름과 ν•¨κ»˜ 좜λ ₯ μ•ˆλ‚΄
                System.out.println(fileName + "의 λ‚΄μš©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.");

                // fileName 을 읽기 μœ„ν•΄μ„œ μ„ μ–Έ
                Scanner reader = new Scanner(inputStream);


                // reader 둜 λ‹€μŒ 쀄을 μ½λŠ” λ™μ•ˆ λ‹€μŒ 쀄을 읽기 μœ„ν•œ 반볡문
                while (reader.hasNextLine()) {
                    System.out.println(reader.nextLine());
                }
                // 읽은 ν…μŠ€νŠΈ μ€„λ°”κΏˆ
                System.out.println("\n");

                // λ‹€ 읽으면 λ‹«κΈ°
                reader.close();
            }

            // λ©”λͺ¨ 쓰기에 λŒ€ν•œ κΈ°λŠ₯
            else if (taskNum == 2) {
                // μ“°κΈ°ν•  λ©”λͺ¨ 파일 이름 μž‘μ„± μ•ˆλ‚΄
                System.out.println("μ €μž₯ν•  λ©”λͺ¨ 파일λͺ…을 μž…λ ₯ν•˜μ„Έμš”.");

                // μ‚¬μš©μžλ‘œλΆ€ν„° 파일λͺ…을 λ°›κΈ°
                String fileName = scanner.nextLine();

                FileWriter writer = null;

                // νŒŒμΌμƒμ„±μ„ μœ„ν•œ κΈ°λŠ₯
                try {
                    writer = new FileWriter(fileName);
                } catch (IOException e) {
                    System.out.println("파일 생성에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.");
                    continue;
                }

                // 파일 λ©”λͺ¨κ°€ μ •μƒμ μœΌλ‘œ μƒμ„±λ˜μ—ˆλ‹€λ©΄ μ•ˆλ‚΄
                System.out.println("λ©”λͺ¨ν•  λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš”.");
                // μ’…λ£Œ μ•ˆλ‚΄
                System.out.println("μ’…λ£Œ : 빈 μ€„μ—μ„œ μ—”ν„° μž…λ ₯.");

                // λ°˜λ³΅λ¬Έμ„ ν†΅ν•΄μ„œ μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›λŠ” κΈ°λŠ₯
                while (true) {
                    // μž…λ ₯받은 값을 input 인자 μ„ μ–Έ
                    String input = scanner.nextLine();

                    // μ‚¬μš©μžκ°€ 빈 쀄을 μž…λ ₯ν–ˆλ‹€λ©΄
                    if (input.equals("")) {
                        // break 둜 반볡문 멈좀
                        break;
                    }

                    // 빈 λ¬Έμžμ—΄μ΄ μ•„λ‹Œ λ¬Έμžμ—΄μ„ μž…λ ₯ν–ˆμ„ 경우
                    try {
                        // μ‚¬μš©μžμ˜ λ¬Έμžμ—΄ μž…λ ₯
                        writer.write(input);
                        // μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ¬Έμžμ—΄μ— μ€„λ°”κΏˆ 처리
                        writer.write("\n");
                    } catch (IOException e) {
                        System.out.println("νŒŒμΌμ— λ¬Έμžμ—΄μ„ 쓰지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.");
                    }
                }

                // μ‚¬μš©μžκ°€ λ¬Έμžμ—΄μ„ μ „λΆ€ μž…λ ₯ν–ˆμ„ λ•Œ
                try {
                    writer.close();
                } catch (IOException e) {
                    System.out.println("νŒŒμΌμ„ λ‹«λŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.");
                }
            }

            else if (taskNum == 3) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            }

            // 1, 2, 3 λ²ˆμ„ μž…λ ₯ν•˜μ§€ μ•Šμ€ κ²½μš°μ— λŒ€ν•œ 처리
            else {
                System.out.println("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€.");
            }
        }
    }
}

 

μ‹€ν–‰ κ²°κ³Ό

μ›ν•˜λŠ” μž‘μ—… 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.
1. λ©”λͺ¨ 읽기
2. μƒˆ λ©”λͺ¨
3. μ’…λ£Œ
2
μ €μž₯ν•  λ©”λͺ¨ 파일λͺ…을 μž…λ ₯ν•˜μ„Έμš”.
src/memo01.txt
λ©”λͺ¨ν•  λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš”.
μ’…λ£Œ : 빈 μ€„μ—μ„œ μ—”ν„° μž…λ ₯.
μ•ˆλ…•ν•˜μ„Έμš”
간단 λ©”λͺ¨μž₯을 λ§Œλ“€μ–΄λ΄€μŠ΅λ‹ˆλ‹€.

μ›ν•˜λŠ” μž‘μ—… 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.
1. λ©”λͺ¨ 읽기
2. μƒˆ λ©”λͺ¨
3. μ’…λ£Œ
1
λ©”λͺ¨ 파일λͺ…을 μž…λ ₯ν•˜μ„Έμš”.
src/memo02.txt
파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
μ›ν•˜λŠ” μž‘μ—… 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.
1. λ©”λͺ¨ 읽기
2. μƒˆ λ©”λͺ¨
3. μ’…λ£Œ
1
λ©”λͺ¨ 파일λͺ…을 μž…λ ₯ν•˜μ„Έμš”.
src/memo01.txt
src/memo01.txt의 λ‚΄μš©μ„ μΆ”κ°€ν•©λ‹ˆλ‹€.
μ•ˆλ…•ν•˜μ„Έμš”
간단 λ©”λͺ¨μž₯을 λ§Œλ“€μ–΄λ΄€μŠ΅λ‹ˆλ‹€.


μ›ν•˜λŠ” μž‘μ—… 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.
1. λ©”λͺ¨ 읽기
2. μƒˆ λ©”λͺ¨
3. μ’…λ£Œ
3
ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

Process finished with exit code 0

 

 


 

 

 

μ˜€λŠ˜λ„ 배움을 톡해 μ¦κΈ°λŠ” 자λ₯Ό λ§›λ³΄μ•˜λ‹€..

살짝 μ“΄ 것 같기도 ν•˜κ³ .. μ•„μ§κΉŒμ§€ 이질적인 맛이 λ‚˜λŠ”λ°..

 

 

 

 

κ·Έλž˜μ„œ 이게 무슨 맛이냐ㅁ..

 

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.