자바

자바 기본 타입 입출력 보조 스트림 - DataInputStream , DataOutputStream / 프린터 보조 스트림 - PrintStream, PrintWriter

알통몬_ 2017. 4. 10. 08:50
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


기본 타입 입출력 보조 스트림

 : 바이트 스트림은 바이트 단위로 출력하기 때문에 기본 데이터 단위로 입출력이 불가능합니다.

DataInputStream 과 DataOutputStream 보조 스트림을 연결하면 기본 데이터 타입으로 입출력이 가능합니다.

DataInputStream dataInputStream = new DataInputStream(바이트 입력 스트림);

DataOutputStream dataOutputStream = new DataOutputStream(바이트 출력 스트림);

** 데이터 타입의 크기는 모두 다르기 때문에 DataOutputStream으로 출력한 데이터를

DataInputStream으로 읽어올 경우에는 출력한 순서와 동일한 순서로 읽어야 합니다.

예제)

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.FileInputStream;

import java.io.FileOutputStream;


public class Example {

 public static void main(String[] args) throws Exception {

  FileOutputStream fileOutputStream = new FileOutputStream("C:/Temp/primitive.dat");

  DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);

  

  dataOutputStream.writeUTF("티스토리");

  dataOutputStream.writeDouble(11.5);

  dataOutputStream.writeInt(3);

  

  dataOutputStream.writeUTF("알통몬");

  dataOutputStream.writeDouble(12.3);

  dataOutputStream.writeInt(4);

  

  dataOutputStream.flush();

  dataOutputStream.close();

  fileOutputStream.close();

  

  FileInputStream fileInputStream = new FileInputStream("C:/Temp/primitive.dat");

  DataInputStream dataInputStream = new DataInputStream(fileInputStream);

  

  for(int i=0; i<2; i++) {

   String name = dataInputStream.readUTF();

   double score = dataInputStream.readDouble();

   int order = dataInputStream.readInt();

   System.out.println(name + " : " + score + " : " + order);

  }

  

  dataInputStream.close();

  fileInputStream.close();

 }

}


프린터 보조 스트림

 : PrintStream 과 PrintWriter

 프린터와 유사하게 출력하는 print() 와 println()을 가지는 보조 스트림입니다.

PrintStream 과 PrintWriter은 거의 같은 기능을 가지는데요.

PrintStream은 바이트 출력 스트림과 연결하고, PrintWriter은 문자 출력 스트림과 연결합니다.

생성방법

PrintStream ps = new PrintStream(바이트출력스트림);

PrintWriter pw = new PrintWriter(문자출력스트림);

예제)

import java.io.FileOutputStream;

import java.io.PrintStream;


public class Example {

 public static void main(String[] args) throws Exception {

  FileOutputStream fileOutputStream = new FileOutputStream("C:/Temp/file.txt");

  PrintStream printStream = new PrintStream(fileOutputStream);

  

  printStream.println("[프린터 보조 스트림]");

  printStream.print("이건 마치 ");

  printStream.println("프린터가 출력하듯이 ");

  printStream.println("데이터를 출력하네.");

  

  printStream.flush();

  printStream.close();

  fileOutputStream.close();

 }

}


printf() 도 제공해서 형식화된 문자열을 출력할 수 있도록 해줍니다.

첫 번째 매개값은 형식화된 문자열을 주고 두 번째 매개값은 형식화된 문자열에

들어갈 값을 주면 됩니다.

import java.util.Date;


public class Example2 {

 public static void main(String[] args) {

  System.out.printf("가격:%d원\n", 111);

  System.out.printf("가격:%6d원\n", 111);

  System.out.printf("가격:%-6d원\n", 111);

  System.out.printf("가격:%06d원\n", 111);

  

  System.out.printf("반지름이 %d인 원의 넓이는 => %10.2f\n", 10, Math.PI*10*10);

  

  System.out.printf("%6d | %-10s | %10s\n", 1, "티스토리", "블로그");

  

  Date now = new Date();

  System.out.printf("오늘은 %tY년 %tm월 %td일\n", now, now, now);

  System.out.printf("오늘은 %1$tY년 %1$tm월 %1$td일\n", now);

  System.out.printf("현재 %1$tH시 %1$tM분 %1$tS초\n", now);

 }

}



이상입니다.

다음 포스팅에서는 객체 입출력 보조 스트림에 대해 공부하겠습니다.

반응형