2020-09-17 TIL ing

3 minute read

트리구조 만들기

import java.io.File;

public class Exam0710x { public static void main(String[] args) { // // 1) 현재 디렉토리의 파일 및 디렉토리 이름 출력 // File dir = new File(“.”); // // File[] files = dir.listFiles(); // // for (File file : files) { // System.out.println(file.getName()); // }

//    // 2) 디렉토리 안의 목록을 출력하는 코드를 별도의 메서드로 분리한다.
//    File dir = new File(".");
//    printFiles(dir);
//  }
//
//  static void printFiles(File dir) {
//    File[] files = dir.listFiles();
//
//    for (File file : files) {
//      System.out.println(file.getName());
//    }
//  }

//    // 3) 하위 디렉토리의 파일 및 디렉토리 목록도 출력한다.
//    File dir = new File(".");
//    printFiles(dir);
//  }
//
//  static void printFiles(File dir) {
//    File[] files = dir.listFiles();
//
//    for (File file : files) {
//      System.out.println(file.getName());
//      if (file.isDirectory()) {
//        printFiles(file);
//      }
//    }
//  }

//    // 4) 하위 디렉토리 내용을 출력할 때는 인덴트를 추가한다.
//    File dir = new File(".");
//    printFiles(dir, 0);
//  }
//
//  static void printFiles(File dir, int level) {
//    File[] files = dir.listFiles();
//
//    for (File file : files) {
//      for (int i = 0; i < level; i++) {
//        System.out.print("  ");
//      }
//      System.out.println(file.getName());
//      if (file.isDirectory()) {
//        printFiles(file, level + 1);
//      }
//    }
//  }

//    // 5) 인덴트 처리 부분을 별도의 메서드로 추출한다.(extract method)
//    File dir = new File(".");
//    printFiles(dir, 0);
//  }
//
//  static void printFiles(File dir, int level) {
//    File[] files = dir.listFiles();
//
//    for (File file : files) {
//      printIndent(level);
//      System.out.println(file.getName());
//      if (file.isDirectory()) {
//        printFiles(file, level + 1);
//      }
//    }
//  }
//
//  static void printIndent(int level) {
//    for (int i = 0; i < level; i++) {
//      System.out.print("  ");
//    }
//  }

// 6) 트리처럼 보이게 |--를 넣어준다.
File dir = new File(".");
printFiles(dir, 0);   }

static void printFiles(File dir, int level) { File[] files = dir.listFiles();

for (File file : files) {
  printIndent(level);
  System.out.println(file.getName());
  if (file.isDirectory()) {
    printFiles(file, level + 1);
  }
}   }

static void printIndent(int level) { for (int i = 0; i < level; i++) { System.out.print(“ “); } System.out.print(“|–”); } }

바이트 단위로 읽기

// 파일 입출력 API 주요 클래스 (java.io 패키지) // 1) 데이터 읽기 // InputStream (추상 클래스) // +– FileInputStream : 바이트 단위로 읽기 (binary stream) // // Reader (추상 클래스) // +– FileReader : 문자 단위로 읽기 (character stream) // // 2) 데이터 쓰기 // OutputStream (추상 클래스) // +– FileOutputStream : 바이트 단위로 쓰기 (binary stream) // // Writer (추상 클래스) // +– FileWriter : 문자 단위로 쓰기 (character stream)

// ## 바이너리 파일 vs 텍스트 파일 // 1) 바이너리 파일 // - 기본 텍스트 편집기(메모장, vi 에디터 등)로 편집할 수 없는 파일을 말한다. // - 만약 텍스트 편집기로 변경한 후 저장하면, 파일 포맷이 깨지기 때문에 무효한 파일이 된다. // - 예) .pdf, .ppt, .xls, .gif, .mp3, .jpg, .hwp, .mov, .avi, .exe, .lib 등 // - 바이너리 파일을 편집하려면 해당 파일 포맷을 이해하는 전용 프로그램이 필요하다. // // 2) 텍스트 파일 // - 기본 텍스트 편집기(메모장, vi 에디터 등)로 편집할 수 있는 파일을 말한다. // - 예) .txt, .csv, .html, .js, .css, .xml, .bat, .c, .py, .php, .docx, .pptx, .xlsx 등 // - 텍스트 파일은 전용 에디터가 필요 없다. // - 텍스트를 편집할 수 있는 에디터라면 편집 후 저장해도 유효하다.

// ## 바이너리 데이터 읽고, 쓰기 // - 읽고 쓸 때 중간에서 변환하는 것 없이 바이트 단위로 그래도 읽고 써야 한다. // - InputStream/OutputStream 계열의 클래스를 사용하라. // // ## 텍스트 데이터 읽고, 쓰기 // - 읽고 쓸 때 중간에서 문자 코드표에 따라 변환하는 것이 필요하다. // - Reader/Writer 계열의 클래스를 사용하라.

파일을 쓸 때 사용

FileOutputStream out = new FileOutputStream(“temp/test1.data”);

파일을 읽을 때 사용

FileInputStream in = new FileInputStream(“temp/test1.data”);

Categories:

Updated: