[혼자 공부하는 자바] 8/16 14-3 [입출력 관련 API]

2020. 8. 16. 22:27·JAVA

System.in

System.out

Scanner

File



14-1, 14-2에서 입출력스트림과 보조 스트림을 배웠는데,

자바 표준 API에서는 이런 스트림들을 이용해서 다양한 기능을 제공한다.

 

자바는 콘솔에서 데이터 입출력 할 때 System.in과 System.out을 사용하는데

이게 바로 각각 InputStream과 PrintStream타입의 필드이다.

 

14-3 : 콘솔 입출력시 보조스트림 사용하는 방법, 파일 입출력시 부가적인 정보를 제공해주는 File클래스를 공부하자.

 


System.in 필드

아아 in 이게 InputStream타입의 필드이다.

(System클래스의 in이라는 정적 필드는 InputStream타입)

>>그래서 System.in은 InputStream 변수로 참조가 가능!

InputStream is = System.in;

 

ㅇInputStream의 read()메소드 : 키보드로 어떤 키가 입력되었는지 확인 가능

ㄴ1byte를 읽는거였지 (int값 리턴)

int keyCode = is.read();

 

ㅇ키보드로는 문자를 입력한다 => 문자 입출력은 Reader, Writer가 편리하다고 했었다 (14-2)

입출력 데이터가 문자라면 바이트기반 스트림을 Reader와 Writer로 변환해서 사용할 수 있다고 배웠었다.

>>다음과 같이 해보자.

엔터키 입력 후 라인의 전체 문자열을 읽으려면

 

 

 

○예제 : 반복해서 키보드에서 입력된 문자열을 라인 단위로 읽고 모니터에 출력하기.


System.out 필드

(System.in이 InputStream타입의 필드였고)

System.out은 PrintStream 타입 필드다..!

(System클래스의 out이라는 정적 필드)

 

>>그래서 PrintStream이 제공하는 print(), println(), printf() 메소드를 이용해 모니터로 출력 가능한 것이다.


Scanner 클래스

입출력스트림 아니다. 보조스트림 아니다.

 

java.util 패키지에서 제공하는 클래스다 : 입력스트림에서 라인단위 문자열을 쉽게 읽도록 하기 위해 제공!

(위에서 공부했듯이 라인단위로 읽기위해 여러 보조스트림(문자변환보조스트림, 버퍼)을 연결하는 작업이 필요했다.

 

>>But!! Scanner는 간편히 라인단위 문자열을 읽을 수 있도록

>>nextLine()메소드를 제공하고 있다 

 

<<바이트기반 입력스트립으로부터 scanner생성하기 + 문자열 읽기>>

Scanner scanner = new scanner(System.in)

String inputData = scanner.nextLine();

 

 

○예제 : Scanner로 상품정보 키보드 입력 받아 Product객체 생성!  + List컬렉션상에서 관리


File 클래스

java.io.File

>>파일 및 폴더(디렉토리) 정보를 제공하는 역할

 

ㅇFile클래스로부터 File객체 생성하기

=>문자열 경로를 제공해야 한다.

File file = new FIle("C:/Temp/file.txt");

File file = new File("C:\\Temp\\file.txt");

(참고: 경로 구분자는 윈도우에서 /와 \\로 사용 가능)

(작성해준 경로에 실제 파일, 폴더 없어도 예외 발생x)

 

ㅇFile객체 생성 후

작성했던 경로에 실제 파일, 폴더 있는지 확인 하고 싶으면 : exists() 메소드 호출 고~!

boolean isExist = file.exists();

 

ㅇ메소드를 통해 파일, 폴더 생성하기

(모두 boolean타입)

createNewFile() : 새로운 파일 생성

mkdir() : 메잌 디렉토리

mkdirs() : 경로상에 없는 모든 디렉토리 생성 

 

ㅇ파일, 폴더 다루는 메소드

리턴타입 메소드 설명
boolean delete() 파/폴 삭제
boolean canExecute() 실행가능한가 (파일)
boolean canRead() 읽을수있는가 (파일)
boolean canWrite() 수정, 저장 가능한가 (파일)
String getName() 파일 이름 리턴
String getParent() 부모 폴더 리턴
File getParentFile() 부모폴더를 File객체로 생성후 리턴
String getPath() 전체경로 리턴
boolean isDirectory() 폴더인가 아닌가 
boolean isFile() 파일인가 아닌가
long isHidden() 숨김파일인가
long length() 파일크기 리턴
String[] list() String 배열로 리턴
폴더 아래 파일, 서브폴더 목록을
String[] list(FilenameFilter filter) String 배열로 리턴
폴더 아래 파일, 서브폴더 목록 중
FilenameFilter에 맞는 것만
File[] listFiles() File배열로 리턴
폴더 아래 파일 및 서브폴더 전부
FIle[] listFiles(FilenameFilter filter) File배열로 리턴
폴더 아래 파일, 서브폴더 목록 중
FilenameFileter에 맞는 것만

 

○예제 : File클래스를 이용한 파일, 폴더 정보 출력

C:/Temp 폴더에 images폴더와 file1.txt, file2.txt, file3.txt 파일 생성하기

Temp폴더에 있는 파일 목록 출력하기

쫌 신기!

 

ㄴ이렇게 파일,폴더 정보 얻을 때 File객체를 생성해 활용할 수 있다.

 

++이런 용도로도 가능!

파일 입출력 스트림 객체를 생성할 때

(FileInput/OutputStream, FileWriter, FileReader)

경로 정보를 제공하는 목적으로도 사용 가능하다.

그.. 스트림 생성자에 문자열 경로 썼었는데 그거 대신 File객체 대입할 수 있다.

 

방법1 (전에 한거)

FileInputStream fis = new FileInputStream("C:/Temp/image.gif");

방법2 (File객체 활용)

File file = new File("C:/Temp/image.gif");

FileInputStream fis = new FileInputStream(file);


꺄 ㅠㅡㅠ

'JAVA' 카테고리의 다른 글

혼공자 - 마지막 프로젝트도 끝냈다! (14챕터 확인문제 1번)  (0) 2020.08.20
14챕터 [입출력스트림] 요약정리 (복습)  (0) 2020.08.16
[6주차] 기본미션 + 선택미션 [혼공단] [혼공자]  (0) 2020.08.16
[혼자 공부하는 자바] 8/16 14-2 [보조 스트림] [문자변환] [성능향상] [기본타입입출력] [프린터]  (0) 2020.08.16
[혼자 공부하는 자바] 8/14 14-1 [입출력 스트림] [문자 기반 스트림] [문자 입출력 스트림] [Writer] [Reader]  (0) 2020.08.14
'JAVA' 카테고리의 다른 글
  • 혼공자 - 마지막 프로젝트도 끝냈다! (14챕터 확인문제 1번)
  • 14챕터 [입출력스트림] 요약정리 (복습)
  • [6주차] 기본미션 + 선택미션 [혼공단] [혼공자]
  • [혼자 공부하는 자바] 8/16 14-2 [보조 스트림] [문자변환] [성능향상] [기본타입입출력] [프린터]
히어로맛쿠키
히어로맛쿠키
  • 히어로맛쿠키
    yeny_lab
    히어로맛쿠키
  • 전체
    오늘
    어제
    • 분류 전체보기 (389)
      • 미분류글 (32)
        • ㅇ (2)
      • JAVA (84)
        • Effective Java (1)
        • Application (21)
      • 컴퓨터구조 & OS (28)
      • 자료구조 + 알고리즘 (43)
      • Database (12)
      • 컴파일러 (10)
      • 수학 (33)
        • 미분방정식 (12)
      • 데이터분석과 머신러닝 (38)
      • 기타 (59)
      • yyeeennyy (25)
  • 공지사항

    • ^o^/♡
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
히어로맛쿠키
[혼자 공부하는 자바] 8/16 14-3 [입출력 관련 API]
상단으로

티스토리툴바