-> 블로그 이전

[명품 Java] 8장 실습문제 (입출력 스트림과 파일 입출력)

2021. 12. 17. 22:32Solution`/Java

[8장 1번]

Scanner로 입력받은 이름과 전화번호를 한 줄에 한 사람씩 c:\temp\phone.txt 파일에 저장하라. "그만"을 입력하면 프로그램을 종료한다

package Java8_1;
import java.io.*;
import java.util.*;

public class Java8_1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        FileWriter fw = null;
        System.out.println("전화번호 입력 프로그램입니다.");
        try{
            fw = new FileWriter("c:\\Temp\\phone.txt");
            while(true){
                System.out.print("이름 전화번호 >> ");
                String text = sc.nextLine();
                if(text.equals("그만"))
                    break;
                fw.write(text);
                fw.write("\n");
            }
            fw.close();
            System.out.println("c:\\Temp\\phone.txt에 저장하였습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
-----------------------------
전화번호 입력 프로그램입니다.
이름 전화번호 >> 차범근 010-1111-2222
이름 전화번호 >> 손흥민 010-3333-4444
이름 전화번호 >> 이승우 010-5555-6666
이름 전화번호 >> 백승호 010-6666-7777
이름 전화번호 >> 그만
c:\Temp\phone.txt에 저장하였습니다.

 

 

[8장 2번]

앞서 저장한 c:\temp\phone.txt 파일을 읽어 화면에 출력하라

package Java8_2;
import java.io.*;

public class Java8_2 {
    public static void main(String[] args) throws IOException{
        try{
            File f = new File("c:\\Temp\\phone.txt");
            BufferedReader br = new BufferedReader(new FileReader(f));
            System.out.println(f.getPath() + "를 출력합니다.");
            String line;
            while((line = br.readLine()) != null)
                System.out.println(line);
            br.close();
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
---------------------------
c:\Temp\phone.txt를 출력합니다.
차범근 010-1111-2222
손흥민 010-3333-4444
이승우 010-5555-6666
백승호 010-6666-7777

 

 

[8장 3번]

c:\windows\system.ini 파일을 읽어 소문자를 모두 대문자로 바꾸어 출력하라

package Java8_3;
import java.io.*;

public class Java8_3 {
    public static void main(String[] args) {
        try{
            File f = new File("c:\\windows\\system.ini");
            BufferedReader br = new BufferedReader(new FileReader(f));
            String line;
            while((line = br.readLine()) != null)
                System.out.println(line.toUpperCase());
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
------------------------------------
; FOR 16-BIT APP SUPPORT
[386ENH]
WOAFONT=DOSAPP.FON
EGA80WOA.FON=EGA80WOA.FON
EGA40WOA.FON=EGA40WOA.FON
CGA80WOA.FON=CGA80WOA.FON
CGA40WOA.FON=CGA40WOA.FON

[DRIVERS]
WAVE=MMDRV.DLL
TIMER=TIMER.DRV

[MCI]

 

 

[8장 4번]

c:\windows\system.ini 파일에 라인 번호를 붙여 출력하라

package Java8_4;
import java.io.*;

public class Java8_4 {
    public static void main(String[] args) {
        try{
            File f = new File("c:\\windows\\system.ini");
            BufferedReader br = new BufferedReader(new FileReader(f));
            String line;
            int count = 0;
            System.out.println(f.getPath() + " 파일을 읽어 출력합니다.");
            while((line = br.readLine()) != null) {
                System.out.println((++count) + ": " + line);
            }
        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

------------------------------------
c:\windows\system.ini 파일을 읽어 출력합니다.
1: ; for 16-bit app support
2: [386Enh]
3: woafont=dosapp.fon
4: EGA80WOA.FON=EGA80WOA.FON
5: EGA40WOA.FON=EGA40WOA.FON
6: CGA80WOA.FON=CGA80WOA.FON
7: CGA40WOA.FON=CGA40WOA.FON
8: 
9: [drivers]
10: wave=mmdrv.dll
11: timer=timer.drv
12: 
13: [mci]

 

 

[8장 5번]

2개의 파일을 입력받고 비교하여 같으면 "파일이 같습니다.", 틀리면 "파일이 서로 다릅니다"를 출력하는 프로그램을 작성하라. 텍스트 및 바이너리 파일 모두를 포함한다.

package Java8_5;
import java.io.*;
import java.util.*;

public class Java8_5 {
    public static void main(String[] args) {
        FileInputStream fr1 = null;
        FileInputStream fr2 = null;
        Scanner sc = new Scanner(System.in);

        System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다");

        System.out.print("첫 번째 파일 이름을 입력하세요 : ");
        String file1 = sc.nextLine();
        System.out.print("두 번째 파일 이름을 입력하세요 : ");
        String file2 = sc.nextLine();

        System.out.println(file1 + "와 " + file2 + "를 비교합니다");

        try{
            fr1 = new FileInputStream(file1);
            fr2 = new FileInputStream(file2);

            if(compare_file(fr1, fr2))
                System.out.println("파일이 동일합니다");
            else
                System.out.println("파일이 다릅니다");

            fr1.close();
            fr2.close();
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    static boolean compare_file(FileInputStream fr1, FileInputStream fr2) throws IOException {
        byte [] buffer1 = new byte[1024]; // fr1 읽어서 저장
        byte [] buffer2 = new byte[1024]; // fr2 읽어서 저장

        int size1 = 0; // fr1의 size
        int size2 = 0; // fr2의 size

        int ch;
        while((ch = fr1.read(buffer1, 0, buffer1.length)) > 0){
            size1 += ch;
        }
        while((ch = fr2.read(buffer2, 0, buffer2.length)) > 0){
            size2 += ch;
        }

        if(size1 != size2)
            return false;
        else{
            for(int i=0; i<1024; i++){
                if(buffer1[i] != buffer2[i])
                    return false;
            }
            return true;
        }
    }
}

---------------------------------------
전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
첫번째 파일 이름을 입력하세요 >> elvis1.txt
두번째 파일 이름을 입력하세요 >> elvis2.txt
elvis1.txt와 elvis2.txt를 비교합니다.
파일이 같습니다.
---------------------------------------
전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
첫번째 파일 이름을 입력하세요 >> elvis1.txt
두번째 파일 이름을 입력하세요 >> elvis2.txt
elvis1.txt와 elvis2.txt를 비교합니다.
파일이 다릅니다.

 

 

[8장 6번]

사용자로부터 2개의 텍스트 파일 이름을 입력받고 첫 번째 파일 뒤에 두 번째 파일을 덧붙인 새로운 파일을 생성하는 프로그램을 작성하라.

package Java8_6;
import java.io.*;
import java.util.Scanner;

public class Java8_6 {
    public static void main(String[] args) {
        FileInputStream fr1 = null;
        FileInputStream fr2 = null;
        FileOutputStream createFile = null;
        Scanner sc = new Scanner(System.in);

        System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다");

        System.out.print("첫 번째 파일 이름을 입력하세요 : ");
        String file1 = sc.nextLine();
        System.out.print("두 번째 파일 이름을 입력하세요 : ");
        String file2 = sc.nextLine();

        try{
            fr1 = new FileInputStream(file1);
            fr2 = new FileInputStream(file2);
            createFile = new FileOutputStream("appended.txt", true);

            new_file(createFile, fr1, fr2);

            System.out.println("프로젝트 폴더 밑에 appended.txt 파일이 저장되었습니다");

            fr1.close();
            fr2.close();
            createFile.close();
        } catch (IOException e){
            e.printStackTrace();
        }
    }

    static void new_file(FileOutputStream fw, FileInputStream fr1, FileInputStream fr2) throws IOException {
        // fr1에 fr2를 더한 최종 텍스트를 fw에 저장
        int ch;
        byte [] buffer = new byte[1024];

        while((ch = fr1.read(buffer, 0, buffer.length)) > 0){
            fw.write(buffer, 0, ch);
            fw.flush();
        }
        while((ch = fr2.read(buffer, 0, buffer.length)) > 0){
            fw.write(buffer, 0, ch);
            fw.flush();
        }
    }
}

----------------------------------
전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
첫번째 파일 이름을 입력하세요 >> elvis1.txt
두번째 파일 이름을 입력하세요 >> elvis2.txt
프로젝트 폴더 밑에 appended.txt 파일에 저장하였습니다.

 

 

[8장 7번]

파일 복사 연습을 해보자. 이미지 복사가 진행되는 동안 10% 진행될 때마다 '*' 하나씩 출력하도록 하라

package Java8_7;
import java.io.*;;

public class Java8_7 {
    public static void main(String[] args) {
        try{
            File f1 = new File("a.png");
            File f2 = new File("b.png");

            if(!f2.exists())
                f2.createNewFile();

            System.out.println(f1.getName() + "를 " + f2.getName() + "로 복사합니다");
            System.out.println("10%마다 *를 출력합니다");

            copyFile(f1, f2);

        } catch(IOException e){
            e.printStackTrace();
        }
    }

    static void copyFile(File f1, File f2){
        // f1을 f2에 복사
        try{
            BufferedInputStream r = new BufferedInputStream(new FileInputStream(f1));
            BufferedOutputStream w = new BufferedOutputStream(new FileOutputStream(f2));

            long boundary = f1.length()/10; // 10% 경계 (byte단위 길이)
            long process = 0; // 진행 %

            byte [] buffer = new byte[(int) boundary];
            // 어차피 배열의 크기를 int형으로 해야하기 때문에 파일의 정확한 10% 경계를 나눌 수 없다
            // 파일 크기 : "21,474,836,470이하"라고 가정하고 풀이

            int ch;

            while((ch = r.read(buffer, 0, buffer.length)) > 0){
                process += ch;
                w.write(buffer, 0, ch);

                if(process >= boundary){
                    System.out.print("*");
                    process = 0;
                }
            }

            r.close();
            w.close();
        } catch(IOException e){
            e.printStackTrace();
        }
    }
}


-------------------------
a.png를 b.png로 복사합니다.
10%마다 *를 출력합니다.
*********

 

 

[8장 8번]

File 클래스를 이용하여 c:\에 있는 파일 중에서 제일 큰 파일의 이름과 크기를 출력하라

package Java8_8;
import java.io.File;

public class Java8_8 {
    public static void main(String[] args) {
        File file = null;
        file = new File("c:\\");
        File[] files = file.listFiles(); // 파일 리스트 배열

        File big = null; // 가장 큰 파일
        long max = 0; // 가장 큰 파일의 크기
        for(int i=0; i<files.length; i++){
            File f = files[i];
            if(!f.isDirectory())
                continue;
            long size = f.length();
            if(max < size){
                max = size;
                big = f;
            }
        }
        if(big==null)
            System.out.println("파일이 없습니다.");
        else
            System.out.println("가장 큰 파일은 " + big.getPath() + " " + max + "바이트");
    }
}

-----------------------------
가장 큰 파일은 c:\Config.Msi 36864바이트

 

 

[8장 9번]

c:\temp에 있는 .txt 파일만 삭제하는 프로그램을 작성하라. c:\나 c:\windows 등의 디렉터리에 적용하면 중요한 파일이 삭제될 수 있으니 조심하라

package Java8_9;
import java.io.*;

public class Java8_9 {
    public static void main(String[] args) {
        File file = new File("c:\\Temp");
        String[] files = file.list();

        System.out.println(file.getPath() + "디렉터리의 .txt 파일을 모두 삭제합니다....");
        int count = 0;
        for(int i=0; i<files.length; i++){
            int index = files[i].lastIndexOf(".txt");
            if(index == -1)
                continue;
            else{
                System.out.println(files[i] + " 삭제...");
                File f = new File("c:\\Temp", files[i]);
                f.delete();
                count++;
            }
        }
        System.out.println("총 " + count + "개의 .txt 파일을 삭제하였습니다...");
    }
}
-------------------------------
c:\Temp디렉터리의 .txt 파일을 모두 삭제합니다....
appended.txt 삭제...
elvis1.txt 삭제...
elvis2.txt 삭제...
phone.txt 삭제...
type3.txt 삭제...
총 5개의 .txt 파일을 삭제하였습니다...

 

 

[8장 10번]

전화번호를 미리 c:\temp\phone.txt 파일에 여러 개 저장해둔다. 이 파일을 읽어 다음 실행 예시와 같은 작동하는 검색 프로그램을 작성하라

package Java8_10;
import java.util.*;
import java.io.*;

public class Java8_10 {
    public static void main(String[] args) {
        Scanner sc = null;
        File file = new File("c:\\Temp\\phone.txt");
        FileReader fr = null;
        HashMap<String, String> hs = new HashMap<String, String>();
        try{
            fr = new FileReader(file);
            sc = new Scanner(fr);

            while(sc.hasNext()){
                String name = sc.next();
                String phone = sc.next();
                hs.put(name, phone);
            }
            System.out.println("총 " + hs.size() + "개의 전화번호를 읽었습니다.");
            sc = new Scanner(System.in);
            while(true){
                System.out.print("이름 >> ");
                String name = sc.next();
                if(name.equals("그만"))
                    break;
                String phone = hs.get(name);
                if(phone == null)
                    System.out.println("찾는 이름이 없습니다.");
                else
                    System.out.println(phone);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
--------------------------------
총 9개의 전화번호를 읽었습니다.
이름 >> 모드리치
찾는 이름이 없습니다.
이름 >> 밪구영
찾는 이름이 없습니다.
이름 >> 손흥민
010-1111-2222
이름 >> 박주영
010-6666-7777
이름 >> 차범근
010-2222-3333
이름 >> 메시
010-8888-9999
이름 >> 그만

 

 

[8장 11번]

words.txt에는 한 라인에 하나의 영어 단어가 들어 있다. 이 파일을 한 라인씩 읽어 Vector<String>에 라인별로 삽입하여 저장하고, 영어 단어를 입력받아 그 단어로 시작하는 모든 단어를 벡터에서 찾아 출력하는 프로그램을 작성하라

package Java8_11;
import java.io.*;
import java.util.*;

public class Java8_11 {
    public static void main(String[] args) {
        Vector<String> v = new Vector<String>();
        File file = new File("words.txt");
        FileReader fr = null;
        Scanner sc = null;
        try{
            fr = new FileReader(file);
            sc = new Scanner(fr);
            while(sc.hasNext()){
                String word = sc.nextLine();
                v.add(word);
            }
            System.out.println("프로젝트 폴더 밑의 " + file.getName() + " 파일을 읽었습니다...");
            sc = new Scanner(System.in);
            while(true){
                boolean find = false;
                System.out.print("단어 >> ");
                String u_word = sc.next();
                if(u_word.equals("그만")){
                    System.out.println("종료합니다....");
                    break;
                }
                for(int i=0; i<v.size(); i++){
                    if(v.get(i).startsWith(u_word)) {
                        System.out.println(v.get(i));
                        find = true;
                    }
                }
                if(find == false)
                    System.out.println("발견할 수 없음");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
--------------------------------
프로젝트 폴더 밑의 words.txt 파일을 읽었습니다...
단어 >> lov
love
lovebird
lovelorn
단어 >> kitt
kitten
kittenish
kittle
kitty
단어 >> asdfjl
발견할 수 없음
단어 >> but
but
butadiene
butane
butch
butchery
butene
buteo
butler
butt
butte
butterball
buttercup
butterfat
butterfly
buttermilk
butternut
buttery
buttock
button
buttonhole
buttonweed
buttress
butyl
butyrate
butyric
단어 >> 그만
종료합니다....

 

 

[8장 12번]

텍스트 파일에 있는 단어를 검색하는 프로그램을 작성해보자.

package Java8_12;
import java.io.*;
import java.util.*;

public class Java8_12 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        try{
            System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.");
            System.out.print("대상 파일명 입력 : ");
            String file = sc.nextLine();
            while(true){
                System.out.print("검색할 단어나 문장 : ");
                String search = sc.nextLine();

                if(search.equals("exit"))
                    break;

                FileReader fr = new FileReader(file);
                BufferedReader br = new BufferedReader(fr);
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

                String line;
                boolean flag = false;
                while((line = br.readLine()) != null){
                    if(line.contains(search)) {
                        bw.write(line + "\n");
                        flag = true;
                    }
                }

                if(flag) {
                    bw.flush();
                }
                else{
                    System.out.println("해당 단어나 문장은 존재하지 않습니다.");
                }
            }
        } catch(IOException e){
            e.printStackTrace();
        }
    }
}
---------------------------------------
전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
대상 파일명 입력 >> test.java
검색할 단어나 문장 >> void
6 :    public static void main(String[] args) {
검색할 단어나 문장 >> int
9 :        System.out.println("전화번호 입력 프로그램입니다.");
13 :                System.out.print("이름 전화번호 >> ");
21 :            System.out.println("c:\\Temp\\phone.txt에 저장하였습니다.");
23 :            e.printStackTrace();
검색할 단어나 문장 >> class
5 :public class Java8_1 {
검색할 단어나 문장 >> ;
1 :package Java8_1;
2 :import java.io.*;
3 :import java.util.*;
7 :        Scanner sc = new Scanner(System.in);
8 :        FileWriter fw = null;
9 :        System.out.println("전화번호 입력 프로그램입니다.");
11 :            fw = new FileWriter("c:\\Temp\\phone.txt");
13 :                System.out.print("이름 전화번호 >> ");
14 :                String text = sc.nextLine();
16 :                    break;
17 :                fw.write(text);
18 :                fw.write("\n");
20 :            fw.close();
21 :            System.out.println("c:\\Temp\\phone.txt에 저장하였습니다.");
23 :            e.printStackTrace();
검색할 단어나 문장 >> 그만
프로그램을 종료합니다...

 

 

[8장 13번]

간단한 파일 탐색기를 만들어보자. 처음 시작은 c:\에서부터 시작한다. 명령은 크게 2가지로서 ".."를 입력하면 부모 디렉터리로 이동하고, "디렉터리명"을 입력하면 서브 디렉터리로 이동하여 파일리스트를 보여준다.

package Java8_13;
import java.io.*;
import java.util.*;

public class Java8_13 {
    private File current = null;
    private File[] lists = null;
    private Scanner sc = null;
    Java8_13(){
        current = new File("c:\\"); // 초기 시작 = c:\\
    }
    void subDic(){
        System.out.println("\t[" + current.getPath() + "]");
        lists = current.listFiles(); // 현재 디렉토리의 파일리스트들
        for(int i=0; i<lists.length; i++){
            if(lists[i].isFile()) {
                System.out.print("file");
                System.out.printf("%-15s", "\t" + lists[i].length() + "바이트");
                System.out.println("\t" + lists[i].getName());
            }
            else {
                System.out.print("dir");
                System.out.printf("%-15s", "\t\t" + lists[i].length() + "바이트");
                System.out.println("\t\t" + lists[i].getName());
            }
        }
    }
    void run(){
        System.out.println("***** 파일 탐색기입니다. *****");
        subDic();
        while(true){
            System.out.print(">> ");
            sc = new Scanner(System.in);
            String command = sc.next();
            if(command.equals("그만"))
                break;
            if(command.equals("..")){
                String s = current.getParent();
                if(s==null)
                    continue;
                else{
                    current = new File(current.getParent()); // 현재 위치를 부모디렉터리로 reset
                    subDic();
                }
            }
            else{
                if((new File("c:\\", command)).isFile()) // command가 파일이면
                    System.out.println("\t디렉터리가 아닙니다.");
                else if(command.equals(current.getName())){ // command가 현재 위치랑 동일할 때
                    subDic();
                }
                else{
                    current = new File(current.getPath(), command);
                    subDic();
                }
            }
        }
    }
    public static void main(String[] args) {
        Java8_13 dic = new Java8_13();
        dic.run();
    }
}
------------------------------------------
***** 파일 탐색기입니다. *****
	[c:\]
dir		4096바이트      		$Recycle.Bin
dir		0바이트         		$WinREAgent
dir		36864바이트     		Config.Msi
dir		4096바이트      		Documents and Settings
file	8192바이트       	DumpStack.log.tmp
...
...
dir		4096바이트      		Temp
dir		4096바이트      		Users
dir		20480바이트     		Windows
dir		16384바이트     		WINDOWS.X64_193000_db_home
>> windows
	[c:\windows]
dir		0바이트         		addins
file	353118바이트     	afreeca.ico
file	222691바이트     	AhnInst.log
dir		0바이트         		appcompat
...
...
dir		13107200바이트  		WinSxS
file	316640바이트     	WMSysPr9.prx
file	11264바이트      	write.exe
>> web
	[c:\windows\web]
dir		0바이트         		4K
dir		0바이트         		Screen
dir		0바이트         		Wallpaper
>> web
	[c:\windows\web]
dir		0바이트         		4K
dir		0바이트         		Screen
dir		0바이트         		Wallpaper
>> ..
	[c:\windows]
dir		0바이트         		addins
file	353118바이트     	afreeca.ico
file	222691바이트     	AhnInst.log
dir		0바이트         		appcompat
...
...
dir		13107200바이트  		WinSxS
file	316640바이트     	WMSysPr9.prx
file	11264바이트      	write.exe
>> ..
	[c:\]
dir		4096바이트      		$Recycle.Bin
dir		0바이트         		$WinREAgent
dir		36864바이트     		Config.Msi
...
...
dir		4096바이트      		Users
dir		20480바이트     		Windows
dir		16384바이트     		WINDOWS.X64_193000_db_home
>> ..
>> 그만

Process finished with exit code 0

 

 

[8장 14번]

문제 13을 확장하여 다음 명령을 추가하라

>>rename phone.txt p.txt // phone.txt를 p.txt로 변경. 파일과 디렉터리 이름 변경
>>mkdir XXX // 현재 디렉터리 밑에 XXX 디렉터리 생성
package Java8_14;
import java.io.*;
import java.util.*;

public class Java8_14 {
    private File current = null;
    private File[] lists = null;
    private Scanner sc = null;
    Java8_14(){
        current = new File("c:\\"); // 초기 시작 = c:\\
    }
    void subDic(){
        System.out.println("\t[" + current.getPath() + "]");
        lists = current.listFiles(); // 현재 디렉토리의 파일리스트들
        for(int i=0; i<lists.length; i++){
            if(lists[i].isFile()) {
                System.out.print("file");
                System.out.printf("%-15s", "\t" + lists[i].length() + "바이트");
                System.out.println("\t" + lists[i].getName());
            }
            else {
                System.out.print("dir");
                System.out.printf("%-15s", "\t\t" + lists[i].length() + "바이트");
                System.out.println("\t\t" + lists[i].getName());
            }
        }
    }
    void mkdir(){
        current.mkdir();
    }
    void rename(File f1, File f2){
        f1.renameTo(f2);
    }
    void run(){
        System.out.println("***** 파일 탐색기입니다. *****");
        subDic();
        while(true){
            System.out.print(">> ");
            sc = new Scanner(System.in);
            String command = sc.nextLine();
            String[] s = command.split(" ");
            if(command.equals("그만"))
                break;
            if(command.equals("..")){
                String st = current.getParent();
                if(st==null)
                    continue;
                else{
                    current = new File(current.getParent()); // 현재 위치를 부모디렉터리로 reset
                    subDic();
                }
            }
            else if(s[0].equals("mkdir")){
                if(s[0].equals(current.getName()))
                    System.out.println(s[1] + " 디렉터리는 이미 존재합니다.");
                else {
                    current = new File(current.getPath(), s[1]);
                    mkdir();
                    System.out.println(s[1] + " 디렉터리를 생성하였습니다.");
                    current = new File(current.getParent());
                    subDic();
                }
            }
            else if(s[0].equals("rename")){
                if(s.length == 1)
                    System.out.println("파일명 2개가 주어지지 않았습니다!");
                else if(s.length == 2){
                    System.out.println("두 개의 파일명이 주어지지 않았습니다!");
                }
                else if(s.length == 3){
                    File file1 = new File(current.getPath(), s[1]);
                    File file2 = new File(current.getPath(), s[2]);
                    rename(file1, file2);
                    System.out.println(s[1] + " -> " + s[2] + " 이름을 변경하였습니다!!");
                    subDic();
                }
            }
            else{
                if((new File("c:\\", command)).isFile()) // command가 파일이면
                    System.out.println("\t디렉터리가 아닙니다.");
                else if(command.equals(current.getName())){ // command가 현재 위치랑 동일할 때
                    subDic();
                }
                else{
                    current = new File(current.getPath(), command);
                    subDic();
                }
            }
        }
    }
    public static void main(String[] args) {
        Java8_14 dic = new Java8_14();
        dic.run();
    }
}
------------------------------------------
***** 파일 탐색기입니다. *****
	[c:\]
dir		4096바이트      		$Recycle.Bin
dir		0바이트         		$WinREAgent
dir		36864바이트     		Config.Msi
...
...
dir		4096바이트      		Users
dir		20480바이트     		Windows
dir		16384바이트     		WINDOWS.X64_193000_db_home
>> Temp
	[c:\Temp]
file	222바이트        	phone.txt
>> mkdir 손흥민
손흥민 디렉터리를 생성하였습니다.
	[c:\Temp]
file	222바이트        	phone.txt
dir		0바이트         		손흥민
>> mkdir 차범근
차범근 디렉터리를 생성하였습니다.
	[c:\Temp]
file	222바이트        	phone.txt
dir		0바이트         		손흥민
dir		0바이트         		차범근
>> mkdir 이승우
이승우 디렉터리를 생성하였습니다.
	[c:\Temp]
file	222바이트        	phone.txt
dir		0바이트         		손흥민
dir		0바이트         		이승우
dir		0바이트         		차범근
>> rename 이승우 백승호
이승우 -> 백승호 이름을 변경하였습니다!!
	[c:\Temp]
file	222바이트        	phone.txt
dir		0바이트         		백승호
dir		0바이트         		손흥민
dir		0바이트         		차범근
>> rename phone.txt p.txt
phone.txt -> p.txt 이름을 변경하였습니다!!
	[c:\Temp]
file	222바이트        	p.txt
dir		0바이트         		백승호
dir		0바이트         		손흥민
dir		0바이트         		차범근
>> 그만

Process finished with exit code 0