[Java] 입출력

rara_kim·2022년 6월 13일
0

Java

목록 보기
13/39

입출력(I/O)

⌨️콘솔 입력

입출력 방식 중 콘솔 입력 방법
1️⃣System.in

  • System.in은 java.io.*에서 Import하는 클래스
  • 키보드와 연결된 자바의 표준 입력 스트림
  • System.in.read() 메소드를 이용해 한 바이트씩 입력된 값을 읽어들인다.
  • 한 바이트씩 입력을 받기 때문에 한글은 입력받지 못한다.
  • System.in.read()은 기본적으로 아스키코드로 값을 받는다.
  • 바이트를 문자나 숫자로 변환해야하는 번거로움이 있다.
int a = System.in.read() - '0';        //'0'을 빼서 숫자정수로 값을 받는다.

char ch = (char) System.in.read();   //(char)로 타입변환

System.in.read(Byte, 0, 4096);         //바이트배열, StartByte, EndByte 
String strByte = new String(Byte);     //Byte -> String 변환
strByte = strByte.trim();              //trim()으로 공백부분 정리

System.in.read(new byte[System.in.available()]);   
//입력 스트림에 남아있는 갯수 만큼 바이트 형태로 읽어 데이터를 소진, 엔터값을 제거

2️⃣InputStreamReader

  • InputStreamReader는 java.io.*에서 Import하는 클래스
  • InputStream 객체를 입력으로 가지고 있어야 하기 때문에 System.in을 이용하여 문자를 입력 받아온다.
  • 여러 개의 문자를 받아올 수 있다.
  • 입력 스트림에 있는 문자를 넣은 배열을 일일이 생성해줘야 한다.
InputStreamReader reader = new InputStreamReader(System.in);
char[] c = new char[3];       //입력 스트림에 있는 문자를 넣은 배열을 생성
reader.read(c);
System.out.println(c);

3️⃣BufferedReader

  • BufferedReader는 java.io.*에서 Import하는 클래스
  • 텍스트의 라인을 읽어온다.
  • InputStreamReader의 객체를 입력값으로 사용한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
System.out.println("s1 = " + s1);

4️⃣Scanner

  • 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스
  • java.util에서 Import하는 클래스
  • Scanner는 입력되는 키 값을 공백으로 구분되는 토큰 단위로 읽는다.
  • nextLine,nextInt 등 많은 메소드가 있다.
Scanner sc = new Scanner(System.in);
System.out.println(sc.nextLine());   

System.out.println(sc.nextInt());
sc.nextLine();

🖥콘솔 출력

  • 입출력 방식 중 콘솔 출력 방법
  • 자바의 대표적인 콘솔 출력 메소드는 System.out.println로 문자열을 출력하고 나서 행을 바꾼다.
  • 문자열 출력 후에 행을 바꾸지 않는 System.out.print 메소드도 있다.
System.out.println("Hello");

System.out.print("World!");

String s = "자바";
int number = 3;
System.out.printf("%s는 언어 선호도 %d위 입니다.\n", s, number);

💡printf

  • 서식이 있는 출력
  • 변수의 값을 여러가지 형식으로 바꿔서 출력할 수 있다.
System.out.printf("%5d\n", 123);          //정수, 오른쪽부터 자릿수 채우기
System.out.printf("%-5d\n", 123);         //정수, 왼쪽부터 자릿수 채우기

System.out.printf("%o\n", 10);            //8진수            
System.out.printf("%x\n", 10);            //16진수

System.out.printf("%.2f\n", 1.126123f);   //실수

System.out.printf("%c\n", 'A');           //문자
System.out.printf("%s\n", "안녕하세요");     //문자열

💾파일 입력

  • 입출력 방식 중 파일로부터 입력 받는 방법
  • FileReaderBufferedReader의 조합을 사용하여 라인 단위로 파일을 읽을 수 있다.
  • BufferedReader는 java.io.*에서 Import하는 클래스
  • BufferdReader의 readLine 메소드는 더이상 읽을 라인이 없을 경우 null을 반환한다.
BufferedReader br = new BufferedReader(new FileReader("./파일이름.txt"));
while (true) {
    String line = br.readLine();    //파일에서 한줄씩 읽어옴
    if (line == null) {
        break;
    }
    System.out.println(line);
}
br.close();

📠파일 출력

입출력 방식 중 파일로 출력하는 방법

1️⃣FileWriter

  • java.io.*에서 Import하는 클래스
  • 라인을 바꾸기 위해서는 \n을 덧붙여야 한다.
FileWriter fw = new FileWriter("./memo.txt");   //매개변수 -> 저장위치,파일이름, 확장자

String memo = "Head Line\n";
fw.write(memo);

fw.close();

2️⃣PrintWriter

  • java.io.*에서 Import하는 클래스
  • \n을 벗붙이는 대신 println이라는 메소드를 사용하여 라인을 바꿀 수 있다.
PrintWriter pw = new PrintWriter("./memo.txt");

memo = "Head Line";
pw.println(memo);

pw.close();

3️⃣파일 이어쓰기

FileWriter fw2 = new FileWriter("./memo.txt", true);
memo = "1월 2일 날씨 완전 맑음\n";
fw2.write(memo);
fw2.close();


//FileWriter를 사용
PrintWriter pw2 = new PrintWriter(new FileWriter("./memo.txt", true));
memo = "1월 3일은 날씨도 맑음";
pw2.println(memo);
pw2.close();

🌟입출력 관련 객체를 사용하고 난 뒤 close로 꼭 닫아줄 것!

profile
느리더라도 꾸준하게

0개의 댓글