
이 전에는 항상 예외처리를 해줄때 try-catch-finally 를 이용해 파일을 열고 읽고 쓰고 닫았다.
하지만 JAVA7 부터 try-with-resources 를 쓰는게 가능해졌다.
try-with-resources
사용한 자원들을 자동으로 종료시켜주는 기능
즉 close( ) 를 해주지 않아도 된다는 것이다.
또한 지금까지 파일로만 받아왔는데 이와는 다른 형식으로 파일 뿐만 아니라 다른 입출력을 받아오는 방법에 대한 코드를 작성했다.
DataInputStream, DataOutputStream 을 통해 파일뿐만 아니라 다른 입출력도 형식에 맞추어 불러올 수 있다.
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ByteExam2 {
public static void main(String[] args) {
try (
DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt"));
DataInputStream in = new DataInputStream(new FileInputStream("src/testScope.java"));
) {
int readCount = -1;
byte[] buffer = new byte[512];
while ((readCount = in.read(buffer)) != -1) {
out.write(buffer, 0, readCount);
}
out.writeInt(100);
out.writeBytes("Hi This is my world.");
out.writeDouble(5.5);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ByteExam2 {
public static void main(String[] args) {
DataOutputStream out = null;
DataInputStream in = null;
try {
out = new DataOutputStream(new FileOutputStream("data.txt"));
in = new DataInputStream(new FileInputStream("src/testScope.java"));
int readCount = -1;
byte[] buffer = new byte[512];
while ((readCount = in.read(buffer)) != -1) {
out.write(buffer, 0, readCount);
}
out.writeInt(100);
out.writeBytes("Hi This is my world.");
out.writeDouble(5.5);
} catch (Exception e) {
e.printStackTrace();
} finally {
try{
in.close();
}catch (Exception e){
e.printStackTrace();
}
try{
out.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
확실히 try-with-resources 의 코드가 짧은것이 보인다.
DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt"));
DataInputStream in = new DataInputStream(new FileInputStream("src/testScope.java"));
DataStream 에 file 같이 정확한 부품들을 끼워주면서 어떤 식으로 저장하고 읽어올 것인지 선택할 수 있다.
장식품과 같다.
파일이 아닌 다른 경로로도 불러오고 싶은 경우에 쓸 수 있다.