고급자바

기본타입 입출력 보조 스트림-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