06. 자바의 입출력
06-1 콘솔 입출력
- 콘솔 출력 : 사용자에게 문자열을 보여 주는 것
- 콘솔 입력 : 출력된 질문에 사용자가 답변을 입력하는 것
1. 콘솔 입력
- System.in 을 사용
import java.io.IOException;
import java.io.InputStream; //InputStream 임포트
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
int a;
a = in.read(); //read 메서드를 통해 int 자료형으로 저장
System.out.println(a);
}
}
1-1 InputStream
- 입력 스트림 : 바이트(byte) 단위의 데이터를 읽어 들일 때 사용하는 내장 클래스
import java.io.IOException;
import java.io.InputStream;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
byte[] a = new byte[3]; //인덱스로 접근 가능(abc 입력)
in.read(a);
System.out.println(a[0]); //97
System.out.println(a[1]); //98
System.out.println(a[2]); //99
}
}
1-2 InputStreamReader
- InputStreamReader : byte 대신 문자로 입력 스트림을 읽음
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in); //InputStreamReader 객체 생성
char[] a = new char[3]; // a = 입력한 값 세글자
reader.read(a);
System.out.println(a); //abc
}
}
1-3 BufferedReader
- BufferedReader : 길이에 상관없이 사용자가 입력한 값을 받아들임
import java.io.IOException;
import java.io.BufferedReader; //BufferedReader 임포트
import java.io.InputStream;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader); //객체 생성
String a = br.readLine(); //readLine 메서드를 통해 문자열 읽음
System.out.println(a);
}
}
1-4 Scanner
- System.in 객체를 통해 입력을 할 수 있음
import java.util.Scanner; //Scanner 클래스 임포트
public class Sample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //객체 생성
System.out.println(sc.next()); //next() 메서드를 통해 토큰 읽음
}
}
- next() 메서드를 통해 숫자, 문자열 등을 읽어들일 수 있음. 그중 일부만 표를 통해 확인
next() 메서드 | 설명 |
next | 토큰을 읽어들임 |
nextLine | 라인을 읽어들임 |
nextInt | 정수를 읽어들임 |
2. 콘솔 출력
- PrintStream : 콘솔에 값을 출력할 때 사용되는 클래스
- System.out : PrintStream 클래스의 객체(콘솔에 문자열을 출력 or 디버깅 할 때 사용)
- System.err : 오류 메시지를 출력
06-2 파일 입출력
1. 파일 쓰기
1-1 FileOutputStream
- FileOutputStream 클래스를 사용하여 파일 생성
import java.io.FileOutputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileOutputStream output = new FileOutputStream("c:/out.txt"); //c:/ 디렉터리 바로 밑에 새로운 파일 out.txt가 생성
output.close(); //사용한 파일 객체를 닫아 주기 위한 코드
}
}
- write를 통해 내용 입력
import java.io.FileOutputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileOutputStream output = new FileOutputStream("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.\r\n";
output.write(data.getBytes()); // byte 단위로 써야하므로 getBytes()메서드 이용
}
output.close();
}
}
1-2 FileWriter
- FileWriter : byte배열 대신 문자열 사용 가능
import java.io.FileWriter;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.\r\n";
fw.write(data); // getBytes메서드 없이 작성 가능
}
fw.close();
}
}
1-3 PrintWriter
- PrintWriter : \r\n 붙이는 대신 println 메서드 사용 가능
1-4 파일에 내용 추가하기
- 두번째 파라미터를 boolean 입력 파라미터로 파일을 추가 모드로 열 것인지 구분
import java.io.FileWriter;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("c:/out.txt");
for(int i=1; i<11; i++) {
String data = i+" 번째 줄입니다.\r\n";
fw.write(data);
}
fw.close();
FileWriter fw2 = new FileWriter("c:/out.txt", true); // true를 통해 파일을 추가 모드로 연다.
for(int i=11; i<21; i++) {
String data = i+" 번째 줄입니다.\r\n";
fw2.write(data);
}
fw2.close();
}
}
2. 파일 읽기
- FileInputStream 클래스를 이용해 파일 읽기
import java.io.FileInputStream;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
byte[] b = new byte[1024];
FileInputStream input = new FileInputStream("c:/out.txt");
input.read(b);
System.out.println(new String(b)); // byte 배열을 문자열로 변경하여 출력
input.close();
}
}
2-1 한줄 단위로 파일 읽기
- FileReader와 BufferedReader의 조합을 사용해 한 줄 단위로 파일 읽기 가능
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Sample {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("c:/out.txt"));
while(true) {
String line = br.readLine();
if (line==null) break; // 더 이상 읽을 라인이 없을 경우 while 문을 빠져나간다.
System.out.println(line);
}
br.close();
}
}
'Java' 카테고리의 다른 글
5주차 퀴즈 (0) | 2024.11.14 |
---|---|
4주차 퀴즈 (2) | 2024.11.06 |
[2024-2 Java 스터디] #4주차 (4) | 2024.11.05 |
3주차 퀴즈 (0) | 2024.10.31 |
[2024-2 Java 스터디] #3주차 (0) | 2024.10.30 |