🎉
プログラミング自主学習 DAY80 DataI/OStream/PrintStream・Writer
DataI/OStream
int型,double型, float型の場合、4bytes、8bytesですので、出力する時は4bytes、8bytesのbyte[] に変換し、出力したり、入力するプロセスがあります。
しかし、このようにデーターを自分で変換することは効率が悪いので、このようなプロセスを内部的に処理してくれるストリムがDataInputStream, DataOutputStreamです。
このように、データーをbyte[] に変換することを**シリアライズ(直列化,Serialization)**と言います。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class DataInputOutputStreamExample {
public static void main(String[] args) {
//DataOutputStream
try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("C:/tmp/primitive.db"))){
dos.writeUTF("홍길동");
dos.writeDouble(95.5);
dos.writeInt(1);
dos.writeUTF("감자바");
dos.writeDouble(90.3);
dos.writeInt(2);
dos.flush();
}catch(Exception e) {
e.printStackTrace();
}try(DataInputStream dis = new DataInputStream(new FileInputStream("C:/tmp/primitive.db"))){
for(int i=0; i<2; i++) {
String name = dis.readUTF();
double score = dis.readDouble();
int order = dis.readInt();
System.out.println(name + ": " + score + ": " + order);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
홍길동: 95.5: 1
감자바: 90.3: 2
PrintStream・PrintWriter
我々が初めて勉強するコードがあります。
System.out.println("Hello, World!")
Hello,World!
Systemクラスのoutフィールドは、PrintStreamの一つで、コンソール上に出力をする機能を持っているメソッドです。
PrintStream、PrintWriter は、このように基本データーや文字、文字列を出力するためのストリームです。System.out.printlnがコンソール上に出力する反面、Print系のクラスのオブジェクトは、プログラムの外部に出力することができるストリームです。
import java.io.FileOutputStream;
import java.io.PrintStream;
public class PrintStreamExample {
public static void main(String[] args) {
try(PrintStream ps = new PrintStream(new FileOutputStream("C:/tmp/printstream.txt",false))){
ps.print("まるで");
ps.println("静かな");
ps.println("恋のような");
ps.printf("| %6d | %-10s | %-18s |\n" , 1,"홍길동","도적");
ps.printf("| %6d | %-10s | %-18s |\n" , 2,"김자바","학생");
ps.flush();
}catch(Exception e) {
e.printStackTrace();
}
}
}
Discussion