입출력 I/O
Stream 입출력
byte 단위에서의 통신
문자를 입출력하면 ascii 코드에 따라 숫자로 나온다.
Stream 입력
1. 콘솔
FileOutputStream fos = new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
---
1024 byte : 사용할 buffer의 크기. 전송하고자 하는 buffer의 사이즈만큼의 공간만큼
데이터를 입력받았다가 그 영역의 데이터만큼을 쌓아두었다가 한 번에 출력할 수 있도록 형태를 구성.
---
DataOutputStream dos = new DataOutputStream(bos);
---
DataOutputStream : 원시 데이터 타입(boolean, integer, ...)의 각각의 값으로서 데이터를
입력하고 출력할 수 있도록 도와주는 여러가지 메소드를 가지고 있는 클래스
---
dos.write...
2. 파일
File file = new File("파일이름");
FileOutputStream fos = new FileOutputStream(file, false);
----parameter의 boolean값: 파일 내용을 append추가(true) / 덮어쓰기(false) ------
BufferedOutputStream bos = new BufferedOutputStream(fos, 1024);
DataOutputStream dos = new DataOutputStream(bos);
dos.write...
3. 네트워크
Socket so = new Socket(...);
---
네트워크 통신. 원격에 있는 다른 컴퓨터.
Socket 클래스를 이용하면 랜선으로 연결된 인터넷 등을 활용할 수 있는 API 제공하고 있음.
이 클래스의 객체를 만들게 되면 랜선을 통해 데이터를 주고받을 수 있는 outputstream 이라는 객체를 가짐.
---
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream(), 1024);
DataOutputStream dos = new DataOutputStream(bos);
dos.write...
참고
- 몇 byte 안 되는 건 FileOutputStream만 써도 되고
- 많은 양의 데이터를 관리해야하면 BufferedOutputStream,
- 다양한 형태로 입출력을 해야하면 DataOutputStream 을 쓰면 된다.
- 세 가지를 모두 다 써야 하는 건 아님.
예시
dos.write(출력하고자하는것); --- 출력
dos.flush(); --- 화면 상에 뿌려져라. buffer에 쌓여있던 걸 비우는 것. 출력해랏.
dos.close(); --- 다 끝났으면 닫기
Stream 입력
콘솔, 파일, 네트워크
- 위에 stream 출력과 동일한데
- Output 대신 Input 이다.
FileInputStream fis = new FileInputStream(FileDescriptor.in);
...
dis.read ...
텍스트 입출력
2 byte 단위의 텍스트 입출력
문자를 넣으면 문자 그대로 입출력
텍스트 출력
콘솔, 파일, 네트워크
콘솔
OutputStreamWriter osw = new OutputStreamWriter(System.out);
BufferedWriter bw = new BufferedWriter(osw);
PrintWriter pw = new PrintWriter(bw);
pw.println(...);
텍스트 입력
콘솔, 파일, 네트워크
- 콘솔 예시
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
System.out.print("이름 = ");
String name = br.readLine();
System.out.println("당신의 이름은 " + name + "입니다.");
--- readLine()은 enter키 칠 때까지 입력 받겠다는 뜻 ---
이러면 console창에
이름 =
나와서 입력하고 enter 치면 문장 출력됨
- 파일 예시
File file = new File("C:/java/aaa.txt");
InputStreamReader isr = new InputStreamReader(file);
BufferedReader br = new BufferedReader(isr);
while(true) {
String str = br.readLine();
if(str == null) break;
System.out.println("한 줄씩 읽은 내용 = " + str);
}
br.close();
--- br.readLine() 하면 파일에서 한 줄씩 읽음 ---
객체 입출력
객체 출력
파일, 네트워크
- 파일
File file = new File("파일이름");
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(...);
...
객체 입력
파일, 네트워크
OutputStream --> InputStream
...
ObjectInputStream ois = new ObjectInputStream(bis);
try {
Object obj = ois.readObject();
} catch(ClassNotFoundException e) {}
...
Author And Source
이 문제에 관하여(입출력 I/O), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@heeboventure/입출력-IO저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)