JAVA-I/O-DataStream

 

[DataStream]

[DataOutPutStream]

public static void main(String[] args) {
	int[] score = {100,60,55,94,12};
	
	try {
			FileOutputStream fos = new FileOutputStream("score.txt");
			DataOutputStream dos = new DataOutputStream(fos);
			for(int i = 0 ; i < score.length ;i++) {
				dos.writeInt(score[i]); //정수값 write > read(DataInputStream)
				//dos.writeUTF(str)
			}
			dos.close();
			fos.close();
	}catch (Exception e) {
		// TODO: handle exception
	}
}

[DataInPutStream]

public class Ex14_DataInputStream {

	public static void main(String[] args) {
		int sum=0;
		int score=0;
		FileInputStream fis=null;
		DataInputStream dis=null;
		try {
				fis =  new FileInputStream("score.txt");
				dis = new DataInputStream(fis);
				while(true) {
					score = dis.readInt();
					System.out.println("Score int 타입 :" + score);
					sum+=score;
				}
		}catch (Exception e) {
			System.out.println("예외발생 : " + e.getMessage());
			System.out.println("sum결과 : " + sum);
		}finally {
			try {
					dis.close();
					fis.close();
					
			}catch (Exception e) {
				
			}
		}

	}

}

[ObjectDataOutPutStream]

//객체를 파일에 write
public class Ex15_ObjectDataOutPutStream {
	public static void main(String[] args) {
		String filename = "UserData.txt";
		try {
			FileOutputStream fos = new FileOutputStream(filename);
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			
			//객체 (직렬화)
			//write (객체 단위로)
			ObjectOutputStream out = new ObjectOutputStream(bos);
			UserInfo u1 = new UserInfo("superman", "super", 500);
			UserInfo u2 = new UserInfo("scott", "tiger", 50);
			
			//직렬화
			out.writeObject(u1);
			out.writeObject(u2);
			
			out.close();
			bos.close();
			fos.close();
			System.out.println("파일생성 -> buffer -> 직렬화객체 -> write");
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}
	}
}

[ObjectDataInPutStream]


//UserData.txt 파일에서 직렬화된 객체를 read (역직렬화) 다시 조립

public class Ex16_ObjectDataInPutStream {
	public static void main(String[] args) {
		String filename = "UserData.txt";
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		ObjectInputStream in = null;
		
		try {
			fis = new FileInputStream(filename);
			bis = new BufferedInputStream(fis);
			in = new ObjectInputStream(bis);
			
			//UserInfo r1 = (UserInfo)in.readObject(); //역직렬화: 복원
			//UserInfo r2 = (UserInfo)in.readObject(); //역직렬화: 복원
			
			//System.out.println(r1.toString());
			//System.out.println(r2.toString());
			
			//객체 단의 read 객체가 없으면 null 값 반환
			Object users = null;
			while((users = in.readObject()) != null) {
				System.out.println(users);
			}
		}catch (Exception e) {
			System.out.println(e.getMessage());
		}finally {
			try {
				in.close();
				bis.close();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}