입력/출력 이란?
다른 곳의 데이터를 가져오는 것을 입력, 다른 곳으로 데이터를 보내는 것을 출력이라고 한다
입/출력 기본 클래스
입/출력에 사용되는 기본 클래스는 1byte 단위로 데이터를 전송하는 InputStream, OutputStream이 있다
FileInputStream / FileOutputStream
파일에 데이터를 읽고/쓰기 위한 클래스로 read(), write() 메서드를 이용한다
FileInputStream
- read(); - 1byte씩 읽는다
- read(byte[]); - [] 크기만큼 읽는다
FileOutputStream
- write(byte[] b); - 전체 쓰기
- write(byte[], int off, int len); - off(시작점), len(길이)
파일 복사
import java.io.*;
public class MainClass {
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new FileInputStream("C:\\copy.txt");
outputStream = new FileOutputStream("C:\\paste.txt");
byte[] arr = new byte[3];
while(true) {
int len = inputStream.read(arr);
if(len==-1) break; // 읽을 데이터가 없을 때까지
outputStream.write(arr,0,len);
}
} catch(Exception e){
e.printStackTrace();
}finally {
if(inputStream != null) {
try {
inputStream.close();
}catch(Exception e) {e.printStackTrace();}
}
if(outputStream != null) {
try {
outputStream.close();
}catch(Exception e) {e.printStackTrace();}
}
}
}
}
DataInputStream, DataOutputStream
byte 단위의 입출력을 개선해서 문자열을 좀 더 편리하게 다룰 수 있다
import java.io.*;
public class Main {
public static void main(String[] args) {
String str = "Hello World!!!!";
OutputStream outputStream = null;
DataOutputStream dataOutputStream = null;
try {
outputStream = new FileOutputStream("C:\\paste.txt");
dataOutputStream = new DataOutputStream(outputStream);
dataOutputStream.writeUTF(str); // 인코딩
} catch(Exception e){
e.printStackTrace();
}finally {
try {
if(dataOutputStream != null) dataOutputStream.close();
}catch(Exception e) {e.printStackTrace();}
try {
if(outputStream != null) outputStream.close();
}catch(Exception e) {e.printStackTrace();}
}
}
}
BufferedReader, BufferedWriter
byte 단위의 입출력을 개선해서 문자열을 좀 더 편리하게 다룰 수 있다
InputStream을 확장해서 DataInputStream을 사용했듯이,
FileReader를 확장해서 BufferedReader를 사용한다
Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String s = sc.nextLine();
String s = sc.next();
char c = sc.next().charAt(0); // sc.nextChar()가 아님을 주의!!!!
hasNext()
hasNextXXX()
nextXXX()
객체를 참조할 때 사용하는 '.'
. 은 객체의 메모리 참조를 의미한다
따라서 st.countTokens()를 여러 번 쓰는 것보다 int count=st.countToken라고 쓰는 것이 더 효율적이다
'Study > Java' 카테고리의 다른 글
[Java/JSP] 웹 프로그램 개요 (프로토콜,IP,정적 & 동적 웹페이지) (0) | 2020.07.04 |
---|---|
[Java] 네트워킹 (Socket, 양방향 통신) (0) | 2020.07.04 |
[Java] 예외처리 Exception, Error (이것만 알면 된다!!) (0) | 2020.07.04 |
[Java] Collections (0) | 2020.07.03 |
[Java] 문자열 클래스(String, StringBuilder, StringBuffer) (0) | 2020.07.03 |
댓글