Daily coding

Java Basic : day 8 - Example 03: 파일 입출력 / 생성 클래스 구현하기 본문

Language/Java_basic

Java Basic : day 8 - Example 03: 파일 입출력 / 생성 클래스 구현하기

sunnnkim 2019. 11. 27. 20:11
package day8.example3;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;

public class FileClass {
	
	private File file;
	private String dirName;
	private String fileName;
	
	public FileClass() {
		dirName = "d:\\";
		file = new File(dirName);
	}
	public void resetDir() {
		dirName = "d:\\";
		fileName="";
	}
	public void setNames() {
		Scanner sc = new Scanner(System.in);
		resetDir();
		
		// 폴더이름 선택
		System.out.println("디렉토리 이름 : ");
		System.out.print("d:\\  ? ");
		String dir = sc.next().trim();
		dirName += dir;
		
		
		
		// 파일 이름 정하기
		System.out.print(" 파일 이름 : ");
		String fn = sc.next().trim();
		fileName = fn+".txt";
		
		
	}
	
	public boolean create() {
		setNames();
		file = new File(dirName);
		file.mkdirs();
		file = new File(dirName+"\\"+fileName);
		if(file.exists()) {
			return false; 
		}
		else {
		try {
			file.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		}
		return true;
		}
	
	public void printCreate() {
		Scanner sc = new Scanner(System.in);
		int choice;
		System.out.println("< 파일 생성하기 >");
		while(true) {
		boolean creatFile = create();
		if(creatFile) {
			System.out.println("파일을 생성함.");
			return;
		}else {
			System.out.println("파일이름이 이미 존재함.");
			System.out.println("1. 다시 생성하기 2. 나가기");
			try {
				choice = sc.nextInt();
			} catch (Exception e) {
				choice = 2;
			}
			if(choice == 1);
			else {
				return;
			}
		}
	}
	}
	public void read() {
		//	file 
		
	}
	public boolean checkExist() {
		file = new File(dirName);
		if(file.exists() && file.isDirectory()) {
			file = new File(dirName+"\\"+fileName);
			if(file.exists())
				return true;
		}
		return false;
	}
	
	public void printReadMenu() {
		setNames();
		boolean checkFile = checkExist();
		if(checkFile) {	// 파일이 있으면 불러온다
			try {
				FileReader fr = new FileReader(file);
				BufferedReader bw = new BufferedReader(fr);
				String str;
				try {
					while((str = bw.readLine()) != null ){
						System.out.println(str);
					}
					bw.close();
				}catch (Exception e) {};
			} catch (Exception e) {};
		}
		else {
			System.out.println("파일이 없습니다.");
		}
		
	}
	public void printwriteMenu() {
		Scanner sc = new Scanner(System.in);
		System.out.println("파일 쓰기");
		setNames();
		boolean checkFile = checkExist();
		if(checkFile) {	// 파일이 있으면 쓴다.
			try {
				FileWriter fw = new FileWriter(file,true);
				PrintWriter pw = new PrintWriter(new FileOutputStream(new File(dirName+"\\"+fileName),true));
				// new FileOutputStream(new File("persons.txt"),true)
				String str ="";
				while(true) {
					str = sc.nextLine();
					if(str.charAt(0) == '-' &&str.charAt(1) == '1') {
						System.out.println("<입력 끝>");
						break;
					}
					pw.println(str);
				}
				pw.close();
				fw.close();
				
				
			} catch (Exception e) {}
		}
	}
	
	public void printMenu() {
		Scanner sc = new Scanner(System.in);
		while(true) {
		System.out.println("< 파일 입출력 및 생성하기 >");
		System.out.println("1. 파일 생성하기");
		System.out.println("2. 파일 읽기");
		System.out.println("3. 파일 쓰기");
		System.out.println("0. 종료");
		int choice;
		try {
			choice = sc.nextInt();
		} catch (Exception e) {
			choice = -1;
		}
		if(choice == 1) {
			printCreate();
		}
		else if(choice == 2) {
			printReadMenu();
		}
		else if(choice == 3) {
			printwriteMenu();
		}
		else {
			System.out.println("종료.");
			break;
		}
		}
	}
}