자바 입출력과 파일

웅평·2023년 12월 11일

입력

사용자가 입력

Scanner sc = new Scanner(System.in);

문자열일 경우

String name = sc.next();
System.out.println(name);

정수일 경우

int i = sc.nextInt();
ystem.out.println(i + " 입력한 숫자");

int i = Integer.parseInt(sc.next());

실수일 경우

double d = Double.parseDouble(sc.next());
double d = sc.nextDouble();
System.out.println("몸무게 " + d);

출력

public class _02_Output {
    public static void main(String[] args) {
        // 출력
        // System.out.format("");
        // System.out.printf("포멧", 값1, 값2, 값3.....);

        System.out.println("----------정수----------");
        System.out.printf("%d%n", 1); // %n 줄바꿈
        System.out.printf("%d %d %d %n", 3, 2, 1);
        System.out.printf("%d%n", 123456);
        System.out.printf("%6d%n", 1234); // %6d 6자리 공간을 확보하고 1234를 출력
        System.out.printf("%06d%n", 1234); // 6자리 공간 확보 후 1234출력하는데 빈자리 0으로 채움
        System.out.printf("%6d%n", -1234); // _-1234
        System.out.printf("%+6d%n", 1234); // _+1234 항상 기호 표시
        System.out.printf("%,12d%n", 100000000); // _100,000,000 3자리 마다 ,(콤마)로 구분
        System.out.printf("%-6d%n", 1234); // 1234__ 6자리 공간 확보후 왼쪽 정렬


        System.out.println("----------실수----------");
        System.out.printf("%f%n", Math.PI);
        System.out.printf("%.2f%n", Math.PI); // 소수 2번째 자리까지
        System.out.printf("%6.2f%n", Math.PI); // 6자리 공간 확보 후 소수 2번째 자리까지
        System.out.printf("%6.2f%n", Math.PI); // 6자리 공간 확보 후 소수 2번째 자리까지
        System.out.printf("%06.2f%n", Math.PI); // 6자리 공간 확보 후 소수 2번째 자리까지 빈자리 0으로 채움
        System.out.printf("%+6.2f%n", Math.PI); // 6자리 공간 확보 후 소수 2번째 자리까지 +기호 붙이기

        System.out.println("----------문자열----------");
        System.out.printf("%s%n", "Java");
        System.out.printf("%6s%n", "Java"); // 6자리 공간 확보 오른쪽 정렬
        System.out.printf("%-6s%n", "Java"); // 6자리 공간 확보 왼쪽 정렬
        System.out.printf("%6.2s%n", "Java"); // 6자리 공간 확보, 앞에 2글자 출력
        System.out.printf("%-6.2s%n", "Java"); // 6자리 공간 확보 왼쪽 정렬 앞에 2글자 출력

        System.out.println("----------문자열 응용----------");
        System.out.println("이름 영어 수학 평균");
        System.out.printf("%s %d %d %.1f %n", "유재석", 90, 80, 85.0);

        System.out.println("----------문자열 응용2----------");
        System.out.println("이름      영어   수학    평균");
        System.out.printf("%-6s %4d %4d %6.1f %n", "이수근", 90, 80, 85.0);
        System.out.printf("%-6s %4d %4d %6.1f %n", "이수근", 100, 80, 85.0);
        System.out.printf("%-6s %4d %4d %6.1f %n", "이수근", 90, 100, 85.0);

    }
}

파일

public class _03_FIle {
    public static void main(String[] args) {
        // 파일 다루기
        String fileName = "test.txt";
        File file = new File(fileName);
        try {
            file.createNewFile(); // 파일 생성, 파일이 있다면 덮어쓰지 않는다
            if (file.exists()) {
                System.out.println("파일 이름 : " + file.getName());
                System.out.println("절대 경로 : " + file.getAbsolutePath());
                System.out.println("파일 크기 Byte : " + file.length());
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
  • 파일을 다룰때는 try catch문이 필수이다

폴더

폴더 생성

public class _04_Folder {
    public static void main(String[] args) {
        // 폴더 다루기
        String folderName = "A";
        File folder = new File(folderName);
        folder.mkdir(); // 폴더 생성
        if (folder.exists()) {
            System.out.println("폴더가 존재합니다 " + folder.getAbsolutePath());
        }
    }
}

하위폴더

  • 상위 폴더 밑에 하위폴더 하나는 만들 수 있지만 하위폴더의 하위폴더는 못만든다
public class _04_Folder {
    public static void main(String[] args) {
        // 폴더 다루기
        String folderName = "A";
        File folder = new File(folderName);
        folder.mkdir(); // 폴더 생성
        if (folder.exists()) {
            System.out.println("폴더가 존재합니다 " + folder.getAbsolutePath());
        }

        // 하위폴더
        // 상위 폴더 밑에 하위폴더 하나는 만들 수 있지만 하위폴더의 하위폴더는 못만든다
        folderName = "A/B/C";

        // "A" + File.separator + "B" + File.separator + "C"
        folder = new File(folderName);
        // mkdir -> mkdirs
        folder.mkdirs(); // 폴더 생성
        if (folder.exists()) {
            System.out.println("폴더가 존재합니다 " + folder.getAbsolutePath());
        } else {
            System.out.println("폴더 생성 실패 (mkdirs)");
        }
    }
}

파일/폴더 조회

 File filesAndFolders = new File(folder);
        System.out.println("현재 폴더 경로 : " + filesAndFolders.getAbsolutePath());

파일과 폴더 구분

        for (File file: filesAndFolders.listFiles()) {
            // 파일과 폴더 구분
            if (file.isFile()) {
                System.out.println("(파일) " + file.getName());
            } else if (file.isDirectory()) {
                System.out.println("(폴더) " + file.getName());
            }

        }

파일 읽기/쓰기

BufferedReader

  • 파일에서 내용을 읽어올 때

BufferedWrite

  • 파일에서 내용을 쓸 때

Buffered

  • 데이터를 한곳에서 다른곳으로 보내는 과정에서 잠기 보관하는 장소

파일 쓰기

try(BufferedWriter bw = new BufferedWriter(new FileWriter("goodjob.txt", true))) {
            // 내용이 덮어쓰기가 된다
            bw.write("1. 이제 거의 끝이 보여. \n");
            bw.newLine(); // 줄 바꿈
            bw.write("2. 잘 배우고 갑니다");
            bw.newLine();
            bw.write("정상이 코 앞이야");
        } catch (IOException e) {
            throw new RuntimeException(e);

파일 읽기

try (BufferedReader br = new BufferedReader(new FileReader("goodjob.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

파일/폴더 삭제

public class _07_DeleteFile {
    public static void main(String[] args) {
        // 파일, 폴더 삭제
        File file = new File("test.txt");
        if (file.delete()) {
            System.out.println("파일 삭제 성공 : " + file.getName());
        } else {
            System.out.println("파일 삭제 실패 : " + file.getName());
        }

       file = new File("goodjob.txt");
        if (file.exists()) {
            if (file.delete()) {
                System.out.println("파일 삭제 성공 : " + file.getName());
            } else {
                System.out.println("파일 삭제 실패 : " + file.getName());
            }
        }

        // 하위폴더가 있으면 상위폴더 삭제 불가능
        // 아래 코드는 맨 하위폴더 하나 삭제
        // File folder = new File("A/B/C");
        File folder = new File("A/");
        if (folder.exists()) {
            if (folder.delete()) {
                System.out.println("폴더 삭제 성공 " + folder.getAbsolutePath());
            } else {
                System.out.println("폴더 삭제 실패 " + folder.getAbsolutePath());
            }
        }

        if (deleteFolder(folder)) {
            System.out.println("*폴더 삭제 성공 " + folder.getAbsolutePath());
        } else {
            System.out.println("*폴더 삭제 실패 " + folder.getAbsolutePath());
        }
    }
    // 전체 폴더 삭제
    // 재귀를 통해서 맨 하위폴더 까지가서 삭제
    public static boolean deleteFolder(File folder){
        if (folder.isDirectory()) {
            for (File file : folder.listFiles()){
                deleteFolder(file);
            }
        }
        System.out.println("삭제 " + folder.getAbsolutePath());
        return folder.delete();
    }
}

0개의 댓글