Java - 7. I/O: File 입출력 (바이트기반/문자기반)

갓김치·2020년 9월 26일
0

고급자바

목록 보기
23/47

파일입출력

바이트 기반 스트림 - FileStream

File 읽기(입력)

  • T05_FileStreamTest.java
  • FileInputStream 객체를 이용해 파일 내용 읽기
FileInputStream fis = null;

try {
  // 방법1) 파일 경로 정보를 문자열로 지정하기
//fis = new FileInputStream("d:/D_Other/test2.txt");

  // 방법2) 파일정보를 File객체를 이용하여 지정하기
  File file = new File("d:/D_Other/test2.txt");
  fis = new FileInputStream(file);

  int c; // 읽어온 데이터를 저장할 변수
  while((c= = fis.read()) != -1) {
    // 읽어온 자료 출력하기
    System.out.print((char) c);
  }

  // 객체 닫아주기
  fis.close();
} catch (FileNotFoundException e) {
  System.out.println("지정한 파일이 없습니다.");
} catch (IOException e) {
  System.out.println("알 수 없는 입출력 오류입니다.");
}
  • 실제 파일
  • 콘솔

File 쓰기(출력)

  • T06_FileStreamTest.java
// 파일에 출력하기
FileOutputStream fos = null;

try {
  fos = new FileOutputStream("d:/D_Other/out2.txt");

  for(char ch='a'; ch <= 'z'; ch++){
    fos.write(ch);
  }
  System.out.println("파일에 쓰기 작업 완료...");

  // 쓰기 작업 완료 후 스트림 닫기
  fos.close();

  // =================================
  // 저장된 파일의 내용을 읽어와 화면에 출력하기
  FileInputStream fis = new FileInputStream("d:/D_Other/out2.txt");

  int c;
  while((c = fis.read()) != -1) {
    System.out.print((char) c);
  }
  System.out.println();
  System.out.println("출력 끝...");

  fis.close();
} catch (IOException e) {
  e.printStackTrace();
}
  • 실제 파일
  • 콘솔

문자 기반 스트림 - FileWriter/Reader

FileWriter 파일 쓰기

  • 사용자가 입력한 내용을 그대로 파일로 저장하기
// 콘솔(표준 입출력장치)과 연결된 입력용 문자 스트림 생성
// InputStreamReader => 바이트 기반 스트림으로 변환해주는 보조 스트림
InputStreamReader isr = new InputStreamReader(System.in);
			//System.in: 기반 스트림 역할을 해줌

FileWriter fw = null; // 파일 출력용(저장) 문자기반 스트림

try {
  // 파일 출력용 문자 스트림 객체 생성
  fw = new FileWriter("d:/D_Other/testChar.txt");

  int c;

  System.out.println("아무거나 입력하세요.");

  // 콘솔에서 입력할 때 입력의 끝 표시는 Ctrl + z를 누른다
  while((c = isr.read()) != -1) {
    fw.write(c); // 콘솔에서 입력받은 값을 파일에 출력하기
  }

  System.out.println("작업 끝...");

  isr.close();
  fw.close();
} (IOException e) {
  e.printStackTrace();
}
  • 1) 콘솔에 입력하기
  • 2) 엔터치고 ctrl+z를 눌러 입력 종료
  • 3) 파일 확인

FileReader 파일 읽기

// 1. 문자 기반 스트림을 이용한 파일 내용 읽기
FileReader fr = null;

// 2. 문자 단위의 입력을 담당하는 Reader형 객체 생성
fr = new FileReader("d:/D_Other/testChar2.txt");

int c;

while((c=fr.read()) != -1) {
  System.out.print((char) c);
}

fr.close();
  • 결과
profile
갈 길이 멀다

0개의 댓글