ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기본타입 입출력 보조 스트림-22.04.01
    고급자바 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

    '고급자바' 카테고리의 다른 글

    직렬화2-22.04.11  (0) 2022.04.11
    직렬화,역직렬화-22.04.01  (0) 2022.04.01
    성능향상을 위한 보조 스트림-22.04.01  (0) 2022.04.01
    보조스트림, 인코딩 -22.04.01  (0) 2022.04.01
    스트림-22.04.01  (0) 2022.04.01
Designed by Tistory.