자바프로그래밍

파일입출력(Data : InputStream, OutputStream)

제주도소년 2020. 6. 1. 16:23

기존의 파일 입출력에서는 바이트나 문자의 형식을 파일에서 읽어들이거나 쓸 수 있었는데, 자바 내에서 문자열 이지만 숫자로 표현하는 경우 반드시 형 변환을 해서 사용을 해야 하는 단점이 있다.

 

이러한 단점을 해결한 클래스가 DataInputStream , DataOutputStream 이다.

이 두개의 클래스는 바이트를 문자로 변환하고  primitive type 의 자료형을 읽고 쓸 수 있다.

주의해야 할 것은 문자열을 쓰거나 읽을 때 readLine() 이 아닌 readUTF() 이다.

 

[ DataInputStream ]

더보기

 

		FileInputStream fis = null;
		DataInputStream dis = null;

		try {
			fis = new FileInputStream("data.dat");
			dis = new DataInputStream(fis);

			/*
			 * 반드시 write한 순서대로 읽어야 함-
			 */
			int count = 1;
			//available() = 읽지 않은 바이트 수를 리턴
			while (dis.available() >= 0) {
				System.out.println("===========" + count + "===========");
				int n = dis.readInt();
				double d = dis.readDouble();
				boolean b = dis.readBoolean();
				String str = dis.readUTF();
				String str2 = dis.readUTF();
				count++;
				System.out.println(n);
				System.out.println(d);
				System.out.println(b);
				System.out.println(str);
				System.out.println(str2);
			}

		} catch (Exception e) {
		} finally {
			MyUtils.closeAll(dis, fis);
		}

 

[ DataOutputStream ]

더보기
		FileOutputStream fos = null;
		DataOutputStream dos = null;

		try {
			fos = new FileOutputStream("data.dat");
			dos = new DataOutputStream(fos);

			Random r = new Random();
			int num = r.nextInt(50) + 3;
			for (int i = 0; i < num; i++) {
				
				dos.writeInt(3);
				dos.writeDouble(3.14);
				dos.writeBoolean(false);
				// 문자열 쓰기
				dos.writeUTF("abc");
				dos.writeUTF("한글\nㅋㅋㅋ");

			}
			dos.flush();
			
			System.out.println(num);
		} catch (IOException e) {
		} finally {
			MyUtils.closeAll(dos, fos);
		}

'자바프로그래밍' 카테고리의 다른 글

파일 입출력(IO패키지)  (0) 2020.05.28
[JAVA] 예외처리  (0) 2020.04.29
[JAVA] 로또 프로그램(컬렉션 사용)  (0) 2020.04.26
List  (0) 2020.04.23
컬렉션  (0) 2020.04.23