본문 바로가기
Kosta DevOps 과정 280기/Java

파일 입출력

by 롯슈83 2024. 5. 24.

컴퓨터 메모리 입장에서, 프로그램 실행한 결과를 화면에 출력하면 컴퓨터가 종료되면 그 결과는 사라지게 된다. 만약 프로그램 실행한 결과를 영구적으로 보관(저장) 하려면 파일을 이용할 수 있다.

 

또, 프로그램 실행에 필요한 데이터를 키보드로부터 입력받지 않고 파일로부터 입력받을 수 있다.

"입출력" 은 컴퓨터 메모리 입장에서 입력이고, 출력이다.

 

프로그램 실행한 결과 즉, 메모리의 내용을 파일로 "출력"

파일로부터 컴퓨터 메모리로 읽어들이기 "입력"

 

-------------------------------------------------------------------------------------------

 

자바는 이러한 "입출력"을 위하여

java.io 패키지에 관련 클래스들을 만들어 두었다.

 

입출력(스트림)

  • 스트림
  • 순서가 있는 자료의 흐름
  • 보통, 다른 프로그래밍에서는 출력하는 대상에 따라서 그것이 파일인가? 혹은 프린터인가 네트워크인가에 따라서 출력 방법이 달라지고 프로그램이 복잡해진다.
  • 자바에서는 출력 대상이 무엇이라도 동일한 방식으로 사용할 수 있도록 만들어두었다. 그것을 "스트림"이라고 한다. 

 

입출력은 크게 2가지 형태의 입출력이 있다. 

  • 문자 단위의 입출력
    • Reader : 문자 단위의 입력을 위한 제일 조상
    • Writer : 문자 단위의 출력을 위한 제일 조상
java.lang.Object
java.io.Writer
java.io.OutputStreamWriter
java.io.FileWriter
프로그램 실행한 결과를 파일로 출력하면 Wirter 의 후손클래스인 FileWriter 를 이용할 수 있다.
package com.kosta.file;

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

//어떤 사람의 이름, 주소, 전화를 입력받아 출력하는 프로그램을 만ㄷㄹ기
public class FileTest2 {
	public static void main(String[] args){
		
		
		Scanner sc = new Scanner(System.in);
		String name, addr, phone;
		System.out.print("이름을 입력 ==> ");
		name = sc.next();
		
		System.out.print("주소을 입력 ==> ");
		addr = sc.next();
		
		System.out.print("전화번호 입력 ==> ");
		phone = sc.next();
		
		
		try {
//			FileWriter fw = new FileWriter("c:/data/info.txt");
	//파일을 생성하면 기본적으로 기존의 파일을 덮어쓰기 한다 
			FileWriter fw = new FileWriter("c:/data/info.txt", true);
			//기본은 덮어쓰기, 추가 모드 
			//파일 생성시에 두번쨰 매개변수(append mode)에 true를 주면 그 파일이 없다면 새로 만들어주고, 이미 있다면 내용을 추가해준다. 
			fw.write("이름: " + name + "\n");
			fw.write("주소: " + addr + "\n");
			fw.write("번호: " + phone + "\n");
			fw.close();
			System.out.println("파일 출력 완료");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}
  • 바이트 단위의 입출력
    • InputStream : 바이트 단위의 입력을 위한 제일 조상
    • OutputStream : 바이트 단위의 출력을 위한 제일 조상

 

 

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

정규표현식  (0) 2024.05.27
문자열  (0) 2024.05.27
난수  (0) 2024.05.23
동적인 배열 Set, List, Map  (0) 2024.05.23
final 키워드가 올 수 있는 곳  (0) 2024.05.23