java 파일 읽고 쓰기

사용자 입력

import java.util.Scanner;
.
.
.
Scanner s = new Scanner(System.in);

String str0 = s.nextLine();
//문자열 넣기

String str1 = s.next();
//띄어쓰기를 인식하여 문자 하나만 넣어줌.

int i = Integer.parseInt(str1);
//숫자라면 문자열로 받고 바꿔준다.

try-catch 문법

컴퓨터 하드웨어의 오동작, 고장으로 인한 응용프로그램 실행 오류가 발생하는 것은 에러라고 하고
프로그램 자체에서 발생하는 오류는 예외라고 한다.

예외의 두 종류

  • 실행 예외
    : 실행 시 예측할 수 없어서 컴파일 과정에서 검사할 수 없다.
  • 일반 예외
    : 예외가 발생할 가능성이 높아서 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사하고 없다면 컴파일 오류가 발생한다.

일반 예외 처리!

try{
	(1)
}catch(Exception e){
	(2)
}finally{
	(3)
}    
  • Exception : 예외를 의미. 미리 프로그램의 오류를 예측하고 "Exception"자리에 특정 오류를 넣어주거나 Exception으로 해두어도 된다.

  • (1)부분에는 오류가 발생될 수 있는 부분을 넣어주고, (2)부분에는 오류가 생겼다면 실행할 부분을 넣어준다. (3)부분은 예외와 상관없이 항상 실행할 코드를 넣어준다. (3)은 생략 가능하다.

  • 다중 catch도 가능하다.

파일 읽고 쓰기

파일에서 데이터 읽기!

: FileInputStream, Scanner 사용. 예외 처리를 해주어야 한다.

  • printStackTrace() : 예외 발생 경로와 메세지를 표시한다.
  • hasNextLine()
import java.io.FileInputStream;
import java.util.Scanner;

public class FileInput{
	public static void main(String[] args){
    	FileInputStream inputstream =null;
        
        try{
        	inputstream = new FileInputStream("src/input.txt");
        }catch(Exception e){
        	e.printStackTrace();  
        }
        
        Scanner s = new Scanner(inputstream);
        
        while(s.hasNextLine()){
        	String str = s.nextLine();
            System.out.println(str);
        }
   }  
}

파일에 데이터 쓰기!

: FileWriter, Scanner, write()

  • writer = new FileWriter("src/output", true);
    true를 해주면 전에 입력한 내용이 사라지지 않고 그 아래에 데이터가 저장된다. (안 해주면 내용 덮어쓰기)
import java.io.FileWriter;
import java.util.Scanner;

public class FileOutput{
	public static void main(String[] args){
    	
        FileWriter writer = null;
        
        try{
        	writer = new FileWriter("src/output");
        }catch(Exception e){
        	System.out.println("파일 생성 실패!");
        }
        
        Scanner s = new Scanner(System.in);
        
        System.out.println("종료하려면 입력없이 Enter");
        while(true){
        	String input = s.nextLine();
            
            if(input == "") {
            	System.out.println("파일 입력을 종료합니다.");
                break;
            }
        
        	try{
            	writer.write(input+"\n");
            }catch(Exception e){
            	System.out.println("잘못된 입력이다.");
                continue;
            } 
       }

		try{
        	writer.close();
        }catch(Exception e){
        	System.out.println("파일 닫기를 실패함..");
        }
   }
}

NotePad 만들기 예제

  • 사용자가 종료할 때까지 실행해야 하므로 while문에 넣어준다.
import java.io.FileInputStream;
import java.util.Scanner;
import java.io.FileWriter;

public class Note{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);

        while(true){
            System.out.println("사용할 기능의 번호를 입력하시오.");
            System.out.println("1. 새 메모 작성");
            System.out.println("2. 메모 읽기");
            System.out.println("3. 메모장 종료");

            int num = 0;
            try{
                String input = s.nextLine();
                num = Integer.parseInt(input);
            }catch(Exception e){
                System.out.println("잘못된 입력이다.");
            }

            if(num ==1){
                FileWriter writer =null;

                System.out.println("메모의 제목을 입력하시오.");
                String fileName = s.nextLine();
                try{
                    writer = new FileWriter(fileName);
                }catch(Exception e){
                    System.out.println("파일 생성 실패!");
                    continue;
                }

                System.out.println("내용 입력(종료는 입력없이 Enter) : ");

                while(true){
                    String input = s.nextLine();
                    if(input.equals("")){break;}

                    try{
                        writer.write(input+"\n");
                    }catch(Exception e){
                        System.out.println("메모 입력 실패!");
                    }
                }

                try{
                    writer.close();
                }catch(Exception e){
                    System.out.println("파일 저장에 실패!!");}
            }

            else if(num ==2){
                FileInputStream inputStream =null;

                System.out.println("메모 제목을 입력하시오.");
                String fileName = s.nextLine();
                try{
                    inputStream = new FileInputStream(fileName);
                }catch(Exception e){
                    System.out.println("존재하지 않는 메모");
                    continue;
                }

                System.out.println(fileName+"메모 내용 출력");
                Scanner sc = new Scanner(inputStream);
                while(sc.hasNextLine()) System.out.println(sc.nextLine());

                sc.close();
            }

            else if(num ==3){
                System.out.println("프로그램을 종료");
                break;
            }

            else{
                System.out.println("잘못된 입력임.");
            }
        }
    }
}              
    
          

코드를 생각하면서 작성했더니 시간이 오래 걸렸다..
그래도 안 까먹을 것 같다ㅎㅎ

좋은 웹페이지 즐겨찾기