코드 그라데이션

Day28-29. 파일 입출력 본문

Java/Mega

Day28-29. 파일 입출력

완벽한 장면 2023. 4. 24. 02:24

파일 입출력

- 자바 콘솔 출력과 파일을 연동하여 파일 읽고 쓰기라고 생각하면 됨.

 

예제를 통해 익히기

1. 파일 쓰기

// 파일 입출력
public class FileWriterTest {

  public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    String str = "자바는 정말 쉬워요! \n" + "오늘 숙제는 2개입니다. \n" + "주말 숙제는 4개입니다.";

    char[] change = new char[str.length()]; // 문자열을 문자열 길이의 배열으로 만들고
    str.getChars(0, str.length(), change, 0);
    //처음부터 str의 길이만큼을 change 배열에 0(첫위치)부터 삽입한다.
    // 그럼 str의 내용이 전부 change 배열 안으로 들어가게 된다.

    System.out.print("파일 이름을 정하세요 : ");
    String fileName = sc.next();
    FileWriter fw = new FileWriter(fileName); // 지금 fileName이라는 파일에다가 글을 쓰겠다는 말.
    // 외부로 나가는 것이므로 오류 발생. 일단 throw IoException 처리 해준다.
    // try-catch의 방법도 있음.
    fw.write(change); // 쓰는 작업
    fw.close(); // 닫는 작업. 반드시 해줘야함.

    System.out.println(fileName + " 파일이 생성됨");
  }


}

 

2. 파일 읽기

public class FileReaderTest {

  public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner(System.in);
    System.out.print("읽고싶은 파일 입력 : ");
    String fileName = sc.next();

    String root = "C:\\Users\\eui44\\OneDrive\\바탕 화면\\메가It\\Mega_plus\\backend_onemore\\" + fileName;
    FileReader fr = new FileReader(root);

    int i;
    while ((i = fr.read()) != -1) { // 얘가 int로 읽어요. -1이면 데이터가 없는 것(디폴트)
      System.out.print((char) i);
    }
    fr.close();

  }
}

 

3. 파일 쓰기(덮어쓰기와 이어쓰기)

public class FileTestWrite {
// 덮어쓰기(새로 쓰기)와 이어쓰기가 있다.
  public static void main(String[] args) throws IOException {

      FileWriter fw1 = new FileWriter("study.txt", false); // 덮어쓰기

//    FileWriter fw2 = new FileWriter("study.txt", true); // 이어쓰기

//    fw2.write("자바 정말 쉬워요! 진짜로요. 제발 좀 믿으세요!");
//    fw2.close();
//    // 얘는 출력하는 게 없어서 아무것도 안나오지만, 파일경로 타고 들어가서 열어보면 추가되어 있음을 확인 가능

    fw1.write("실험을 위해 덮어쓰기를 해볼거예요. 자바 정말 쉬워요!!!");
    fw1.close();
  }

}

 

4. 파일 읽기(문장으로)

public class FileTestRead {

  public static void main(String[] args) throws IOException {

    FileReader fr = new FileReader("study.txt");
    BufferedReader reader = new BufferedReader(fr);

    String line;
    while ((line = reader.readLine()) != null) { // 읽으려고 한 줄 뺐는데 null이 아니면!(내용 유)
      System.out.println(line);
      // 얘가 더 편한 건, 한 줄 문자열로 넘어온다는것. 저번처럼 귀찮은 형변환이 필요가 없어요.
    }
  }

}
728x90

'Java > Mega' 카테고리의 다른 글

Day28-3. 자료구조(6) Map  (0) 2023.04.24
Day28-2. 자료구조(5) Set  (0) 2023.04.24
Day27-4. 자료구조와 컬렉션 (2) Stack  (0) 2023.04.23
Day27-3. 자료구조와 컬렉션 (1) List  (0) 2023.04.23
Day27-2. 자료구조 도입  (0) 2023.04.23
Comments