다연이네

[days24] InputStream - 사진 정보 2진수로 출력 / 바이트씩 읽기 / String입력받기 본문

Java

[days24] InputStream - 사진 정보 2진수로 출력 / 바이트씩 읽기 / String입력받기

 다연  2020. 10. 24. 20:03
반응형

1. 사진 정보를 2진수로 출력하기

2. 2진수를 8자리씩 찍기

3. 0.1초씩 시간을 두고 한 자씩 출력하기

package test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class Re02 {

	public static void main(String[] args) {
		
		String fileName = ".\\src\\days24\\자바IO.PNG"; //이미 있는 사진
		InputStream is = null;
		
		try {
			is = new FileInputStream(fileName);
			int b = 0;
			while((b=is.read())!=-1) {
				//1. 사진정보를 2진수로 출력해보자
				//System.out.println(Integer.toBinaryString(b)); 
				
				//2. 2진수로 8자리씩 찍고싶다
				String v = Integer.toBinaryString(b);
				int i = Integer.parseInt(v); //2진수 String을 int형으로 변환
				//System.out.println(String.format("%08d", i));
				
				//3. 한 자씩 텀을 두고 찍어보자
				String x = String.format("%08d", i);
				for (int j = 0; j < x.length(); j++) {
					char one = x.charAt(j);
					System.out.print(one); // 0 1 0 1 0 1 1 
					try {
						Thread.sleep(100); //0.1초씩 기다리자
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
				
			}
		} catch (Exception e) {
			System.out.println("읽고자 하는 파일을 찾을 수 없습니다.");
		}finally {
			if(is!=null)
				try {
					is.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}

}

 

내가 원하는 바이트씩 읽기 작업 (1024 바이트씩 읽기 작업)

package test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Re02 {

	public static void main(String[] args) {
		
		String fileName = ".\\src\\days24\\자바IO.PNG"; 
		
		//내가 원하는 바이트씩 읽기 작업 (1024 바이트씩 읽기 작업)
		InputStream is=null;
		try {
			is= new FileInputStream(fileName); 
			byte [] b = new byte[1024]; //버퍼(buffer)
			// is 파일 읽기 용도의 바이트 스트림으로부터 1024바이트 읽어와서 -> byte [] b에 저장하겠다
			int n=-1;
			while ((n =is.read(b))!=-1) {  //버퍼에 1024개 읽어와서 저장 한 것
				//만약 1325바이트라면 1024읽어와서 저장하고 그 다음 301바이트 읽어와서 저장
				//읽은 데이터는 b라고하는 버퍼에 담겨져 있음
				for (int i = 0; i < n; i++) { 
					System.out.println(b[i]);
                    //왜 아까랑 달리 음수값이 나오는지 ? 아까는 0~255 int값 / 원래는 바이트 값은 음수이다
				}


			}
		} catch (FileNotFoundException e) {

			System.out.println("> 읽고자하는 파일을 찾을 수 없습니다.");
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(is!=null) 
				try {
					is.close(); 
				} catch (IOException e) {
					e.printStackTrace();
				}


		}
		System.out.println("=END=");

	}

}

 

InputStream을 통해 이름 입력받기

package test;

import java.io.IOException;
import java.io.InputStream;

public class Re02 {

	public static void main(String[] args) {
		byte [] buffer = new byte[1024];
		InputStream is = System.in;
		try {
			int n = 0;
			System.out.print("이름 ? ");
			n = is.read(buffer);
			String name = new String(buffer, 0, n);
			System.out.println(name);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

출력값

이름 ? 배다연
배다연

 

반응형
Comments