19.04.21 IO 기반 입출력 및 네트워킹-1

Back-End/Java 2019. 4. 21. 18:31
728x90
반응형

 

-입력 스트림과 출력 스트림-

 

프로그램이 데이터를 입력받을 때에는 입력스트림(InputStream)이라고 부르고,
프로그램이 데이터를 보낼 때에는 출력스트림(OutputStream)이라고 부른다.

 

 

 

-콘솔 입출력-

 

콘솔은 시스템을 사용하기 위해 키보드로 입력을 받고 화면으로 출력하는 소프트웨어를 말한다.
자바는 콘솔로부터 데이터를 입력받을 때 System.in을 사용하고, 콘솔에 데이터를 출력할 때 System.out를 사용한다.
그리고 에러를 출력할 때에는 System.err을 사용한다.

 

 

 

-System.in 필드-

 

콘솔로부터 데이터를 입력받을 수 있도록 System클래스의 in정적 필드를 제공하고 있다.
System.in은 InputStream 타입의 필드이므로 InputStream 변수로 참조가 가능하다.

 

InputStream is  System.in;

 

read()메소드로 입력된 바이트를 읽으면 아스키 코드가 들어있다.
키보드에서 입력한 문자를 직접 얻고 싶다면 read() 메소드로 읽은 아스키 코드를 char로 타입
변환하면 된다.

 

char inputChar = (char) is.read();

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.hs.chap18;
 
import java.io.IOException;
import java.io.InputStream;
 
public class SystemInExample1 {
 
    public static void main(String[] args) throws Exception {
        System.out.println("== 메뉴 ==");
        System.out.println("1. 예금 조회");
        System.out.println("2. 예금 출금");
        System.out.println("3. 예금 입금");
        System.out.println("4. 종료 하기");
        System.out.println("메뉴를 선택하세요: ");
 
        InputStream is = System.in//키보드 입력 스트림 얻기
        char inputChar = (char) is.read(); //얻은 아스키 코드를 문자로 리턴
        switch (inputChar) {
        case '1':
            System.out.println("예금 조회를 선택하셨습니다.");
            break;
 
        case '2':
            System.out.println("예금 출금을 선택하셨습니다.");
            break;
 
        case '3':
            System.out.println("예금 입금을 선택하셨습니다.");
            break;
 
        case '4':
            System.out.println("종료하기를 선택하셨습니다.");
            break;
 
        }
 
    }
}
 
cs

 

 

 

-System.out 필드-

 

콘솔로 데이터를 출력하기 위해서 사용하는 필드.
out는 PrintStream 타입의 필드이다.

 

OutputStream os = System.out;

 

 


-Console 클래스-

 

콘솔에서 입력받은 문자열을 쉽게 읽을수 있도록 하는 클래스.
이클립스에서 실행하면 System.console() 메소드는 null을 리턴하기 때문에 반드시
명령 프롬프트에서 실행해야 한다.

 

 

 

-Scanner 클래스-

 

Console 클래스는 콘솔로부터 문자열은 읽을 수 있지만 기본타입(정수,실수) 값을 바로 읽을 수는 없다.
Scanner 클래스를 이용하면 콘솔로부터 기본 타입의 값을 바로 읽을 수 있다.
Scanner 객체를 생성하려면 생성자에 System.in 매개값을 주면 된다.

 

Scanner scanner = new Scanner(System.in);

 

 

 

-FileInputStream-

 

파일로부터 바이트 단위로 읽어드릴때 사용하는 바이트 기반 입력 스트림이다.
바이트 단위로 읽기 때문에 그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 파일을 읽을 수 있다.

 

//첫번째 형식

FileInputStream fis = new FileInputStream("C:/Temp/image.gif"); //문자열로된 파일의 경로를 가지고 생성

 

 

//두번째 형식

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

 

 

 

-FileWriter-

 

텍스트 데이터를 파일에 저장할 때 사용하는 문자 기반 스트림.

 

 

-예제 및 출력결과-

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.hs.chap18;
 
import java.io.File;
import java.io.FileWriter;
 
public class FileWriterExample {
    public static void main(String[] args) throws Exception {
        File file = new File("C:/Temp/file.txt"); // C:/Temp/file.txt경로에 txt파일을 만든다.
        FileWriter fw = new FileWriter(file, true);
        fw.write("FileWriter는 한글로된" + "/r/n");
        fw.write("문자열을 바로 출력할 수 있다." + "/r/n");
        fw.flush(); // 출력 버퍼에 있는 데이터를 파일로 완전히 출력
        fw.close(); // 파일을 닫는다.
        System.out.println("파일에 저장되었습니다.");
 
    }
}
 
cs

 

 

728x90
반응형

'Back-End > Java' 카테고리의 다른 글

NIO 기반 입출력 및 네트워킹-1  (0) 2019.04.23
19.04.22 IO기반 입출력 및 네트워킹-2  (0) 2019.04.22
19.04.20 스트림과 병렬 처리  (0) 2019.04.20
19.04.19 컬렉션 프레임워크  (0) 2019.04.19
19.04.18 람다식  (0) 2019.04.18
: