고급자바
기본타입 입출력 보조 스트림-22.04.01
AIN99
2022. 4. 1. 16:33
728x90
기본타입 입출력 보조 스트림 예제
public class T13_DataIOStreamTest {
public static void main(String[] args) {
FileOutputStream fos=null;
//출력용 데이터를 자료형에 맞게 출력해 준다.
DataOutputStream dos=null;
try {
fos= new FileOutputStream("d:/D_Other/test.dat"); //기본
dos=new DataOutputStream(fos);
dos.writeUTF("홍길동"); //문자열 데이터 출력(UTF-8)
dos.writeInt(17); //정수형으로 데이터 출력
dos.writeFloat(3.14f); //실수형(Float)으로 데이터 출력
dos.writeDouble(3.14); //실수형(Double)으로 데이터 출력
dos.writeBoolean(true); //논리형으로 데이터 출력
System.out.println("출력완료...");
}catch(IOException ex) {
ex.printStackTrace();
}finally {
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
출력한 자료 읽어오기
public class T13_DataIOStreamTest {
public static void main(String[] args) {
//출력한 자료 읽어오기
FileInputStream fis=null;
DataInputStream dis=null;
try {
fis= new FileInputStream("d:/D_Other/test.dat"); //기본
dis=new DataInputStream(fis); //보조
System.out.println("문자열 자료: "+dis.readUTF());
System.out.println("정수형 자료: "+dis.readInt());
System.out.println("실수형(Float) 자료: "+dis.readFloat());
System.out.println("실수형(Double) 자료: "+dis.readDouble());
System.out.println("논리형 자료: "+dis.readBoolean());
}catch(IOException ex) {
ex.printStackTrace();
}finally {
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
만약에 자료출력 순서를 바꿔버리면 꼬일 수도 있다. 순서대로 자료형에 맞게 바이트가 되어있는데 순서를 어기면 잘려서 가져올 수 있기 때문이다.
프린터 기능 제공 보조 스트림 예제
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class T14_PrintStreamTest {
public static void main(String[] args) throws IOException {
/*
PrintStream은 모든 자료형을 출력할 수 있는 기능을 제공하는 OutputStream의 서브클래스이다.
PrintStream은 IOException을 발생시키지 않는다.
println 및 print 등 메서드 호출시마다 autoflush 기능이 제공됨.
*/
FileOutputStream fos= new FileOutputStream("d:/D_Other/print.txt");
PrintStream out =new PrintStream(fos);
out.print("안녕하세요. PrintStream입니다.\n");
out.println("안녕하세요. PrintStream입니다2.");
out.println("안녕하세요. PrintStream입니다3.");
out.println(out); //객체 출력
out.close();
}
}
PrintStream은 데이터를 문자로 출력하는 기능을 수행함.(System.out)
향상된 기능의 PrintWriter가 추가되었지만 계속 사용됨.
PrintWriter가 PrintStream 보다 다양한 언어의 문자를 처리하는데 적합하다.
둘다 기본적으로 autoflush 기능이 꺼져 있음.
public class T14_PrintStreamTest {
public static void main(String[] args) throws IOException {
// FileOutputStream fos= new FileOutputStream("d:/D_Other/print.txt");
//
// PrintStream out =new PrintStream(fos);
// out.print("안녕하세요. PrintStream입니다.\n");
// out.println("안녕하세요. PrintStream입니다2.");
// out.println("안녕하세요. PrintStream입니다3.");
// out.println(out); //객체 출력
//
// out.close();
/*
PrintStream은 데이터를 문자로 출력하는 기능을 수행함.(System.out)
향상된 기능의 PrintWriter가 추가되었지만 계속 사용됨.
PrintWriter가 PrintStream 보다 다양한 언어의 문자를 처리하는데 적합하다.
둘다 기본적으로 autoflush 기능이 꺼져 있음.
*/
PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream("d:/D_Other/print2.txt"),"UTF-8"));
pw.print("안녕하세요. PrintWriter 입니다.\n");
pw.println("안녕하세요. PrintWriter 입니다2.");
pw.println("안녕하세요. PrintWriter 입니다3.");
pw.close();
}
}
PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream("d:/D_Other/print2.txt"),"UTF-8"));
"UTF-8"에 따라서 저장유형이 달라짐 "ANSI"였다면 ansi로 저장됐을것이다.
728x90