본문 바로가기
  • Coding & Book
학습단/JAVA 학습단

24. 혼공자 24일차(입출력 관련 API)

by 루이3 2023. 8. 17.

콘솔

  • 콘솔은 시스템을 사용하기 위해 키보드로 입력을 받고 모니터로 출력하는 소프트웨어를 말합니다.
  • 유닉스나 리눅스 운영체제는 터미널에 해당합니다.
  • 윈도우 운영체제는 명령 프롬포트에 해당합니다.
  • 자바는 데이터를 입력받을 때 System.in , 출력할 때는 System.out을 사용합니다.

 

System.in 필드

  • 자바는 콘솔에서 키보드의 데이터를 입력 받을수 있도록 System 클래스의 in 정적필드를 제공합니다.
  • System.in은 InputStream 타입의 필드입니다. 
InputStream is = System.in;

 

키보드로부터 어떤 키가 입력되었는지 확인하기 위해 read() 메소드로 1byte를 읽어오면 됩니다.

int keyCode = is.read();

 

예시) 키보드로부터 라인 단위 문자열 얻기

package secfin.exam01;

import java.io.*;

public class GetLineStringFromKeyboard {

	public static void main(String[] args)  throws Exception {
    
   	 	//InputStream을 Reader로 변환하고 다시 BufferedReader로 연결
		InputStream is = System.in;
		Reader reader = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(reader);

		while(true) {
			System.out.print("입력하기: ");
			String lineStr = br.readLine();
			if(lineStr.equals("end")) break;
			System.out.print("입력된 내용: " + lineStr);
			System.out.println();
		}
		
		br.close();
	}
}

 

 

 

System.out 필드

  • 콘솔에서 모니터로 데이터를 출력하기 위해서는 System 클래스의 out 정적필드를 사용합니다.
  • System.out은 PrintStream 타입의 필드 입니다.

 

Scanner 클래스

  • Scanner 클래스는 입출력, 보조 스트림이 아닙니다.
  • java.util 패키지에서 제공하는 클래스입니다.
Scanner scanner = new Scanner(Syste.in);
String inputData = scanner.nextLine();

 

File 클래스

  • java.io 패키지에서 제공하는 File 클래스는 파일 및 폴더 (디렉터리) 정보를 제공해 주는 역할을 합니다.
  • File 객체를 생성하기 위해 문자열 경로를 제공해줘야 합니다.
  • 경로 구분자는 운영체제 마자 다른데 윈도우에서는 / , \를 둘 다 사용할 수 있습니다.
  • 유닉스나 리눅스에서는 /를 사용합니다.
  • File 객체를 생성했다고 파일이나 폴더가 생성되는 것은 아닙니다.
  • 해당 경로에 파일이나 폴더가 있는지 확인하기 위해 File객체를 생성 후
    exists() 메소드를 호출하면 됩니다.
File file = new File("위치/file.txt);

 

예시) exists() 메소드

boolean isExist = file.exists();

 

 

 

알아두기

exists() 메소드의 리턴값이 false일 때

리턴 타입 메소드 설명
boolean createNewFile() 새로운 파일을 생성
boolean mkdir() 새로운 폴더 생성
boolean mkdirs() 경로상에 없는 모든 폴더 생성

 

exists() 메소드의 리턴값이 true일 때

리턴 타입 메소드 설명
boolean delete() 파일 또는 폴더를 삭제
boolean canExecute() 실행할 수 있는 파일인지 여부를 확인
boolean canRead() 읽을 수 있는 파일인지 여부를 확인
boolean canWrite() 수정및 저장이 가능한 파일인지
여부 확인
String getName() 파일의 이름 리턴
String getParent() 부모 폴더를 리턴
File getParentFile() 부모 폴더를 File객체로 생성후 리턴
String getPath() 전체 경로 리턴
boolean isDirectory() 폴더인지 여부 확인
boolean isFile() 파일인지 여부 확인
boolean isHidden() 숨김파일인지 여부 확인
long lastModified() 마지막 수정 날짜 및 시간 리턴
long length() 파일의 크기 리턴

 

 

알아두기 2

  • 파일 또는 폴더의 정보를 얻기 위해 File객체를 단독으로 사용할 수 있지만
  • 파일 입출력 스트림 객체를 생성할 때 경로 정보를 제공할 목적으로도 사용합니다.
  • 아래와 같이 스트림 생성자에 문자열 경로 대신에 다음과 같이 File 객체를 대입할 수 있습니다.
//첫번째 방법
FileInputStream fis = new FileInputStream("경로/imgage.gif");


//두번째 방법
File file = new File("경로/imgage.gif");
FileInputStream fis = new FileInputStream(file);