DataInputStream,DataOutPutStream,PrintStream
InputStream과 OutputStream만으로는 데이터를 오직 byte단위로만 입출력할 수 있다.다양한 타입의 입출력을 위해서는 복잡한 과정이 필요하다.
package com.java.io06_filterstream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class DataInoutput01 {
public static void main(String[] args) throws IOException {
// DataInoutStream :다양한 자료형을 입출력하기 위한 보조 스트림
//좀 전까지 데이터 출력시 복잡한 코드 작성
//int,long,float,string 등등 간편하게 출력가능
String path = "C:\\\\FileTest\\\\dir1\\\\test01.txt";
// 1.파일 객체 생성
File dataFile = new File(path);
// 2.데이터 쓰기
OutputStream os = new FileOutputStream(dataFile); //메인 스트림
DataOutputStream dos = new DataOutputStream(os); //보조 스트림
dos.writeInt(35);
dos.writeDouble(3.5);
dos.writeChar('A');
dos.writeUTF("안녕하세요");
dos.flush();
//3.데이터 읽기
//스트림 생성
InputStream is = new FileInputStream(dataFile);
DataInputStream dis = new DataInputStream(is);
System.out.println(dis.readInt());
// System.out.println(dis.readDouble());// 순서대로 불러와야 한다.
System.out.println(dis.readChar());
System.out.println(dis.readUTF());
}
}
package com.java.io06_filterstream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CombineFilter01 {
public static void main(String[] args) throws IOException {
// Combine(복합 필터) =DataIn/OutputStream +BufferedIn/OutputStream
File dataFile = new File("C:\\\\FileTest\\\\dir1\\\\test01.txt");
// 데이터 쓰기 OutputStream +BufferedOutputStream+DataOutputStream (속도 +다양성)
try (OutputStream os = new FileOutputStream(dataFile); // 메인 스트림
BufferedOutputStream bos = new BufferedOutputStream(os); // 보조 스트림
DataOutputStream dos = new DataOutputStream(bos); //// 보조 스트림
) {
dos.writeInt(35);
dos.writeDouble(3.5);
dos.writeChar('A');
dos.writeUTF("안녕하세요");
dos.flush();
}
// 데이터 읽기
try (InputStream os = new FileInputStream(dataFile); // 메인 스트림
BufferedInputStream bis = new BufferedInputStream(os); // 보조 스트림
DataInputStream dis = new DataInputStream(bis); //// 보조 스트림
) {
System.out.println(dis.readInt());
System.out.println(dis.readDouble());// 순서대로 불러와야 한다.
System.out.println(dis.readChar());
System.out.println(dis.readUTF());
}
} // main
}
다양한 타입의 출력에 특화된 클래스이다.
자동으로 flush()기능을 제공하기 때문에 따로 flush()메소드를 호출할 필요가 없다.
PrintStream은 모든 자료형을 출력할수있는 print(), println()메서드가 오버로딩 되어있다.
프로그램이 시작되면 장치와 연결된 출력 스트림인 System.out, System.err객체가 PrintStream객체이다.
System.out.println() 함수는 PrintStream 클래스가 제공하는 메소드이다.
package com.java.io06_filterstream;
public class PrintStream01 {
public static void main(String[] args) {
// ...>OutpStream > FilterOutputStream>PrintStream > System.out
//PrintStream: 다양한 입출력을 위한 특별클래스
//모든 자료형을 출력할 수 있다.
//print(),println() 메서드가 오버로딩 되어 있다.
//메모리를 비우는 flush메소드를 호출 할 필요가 없다.
System.out.println();//PrintStream > System.out
}
}