[JAVA] 바이트 입출력 스트림

hyun·2023년 4월 9일
0
  1. 바이트 출력 스트림
// 기존의 파일에 append 하고 싶으면 (파일 루트, true)
		OutputStream os = new FileOutputStream("C:/Temp/db");
		
//		os.write((byte)10);
//		os.write((byte)20);
		
		byte[] arr = new byte[] {10,20,30,40,50};
//		os.write(arr);
		os.write(arr,1,3);
		
		os.flush();
		os.close();
  1. 바이트 입력 스트림
		InputStream is = new FileInputStream("C:/Temp/db.text");
//		byte 1개씩 읽기
//		while(true) {
//			int data = is.read();
//			if(data==-1) break;
//			System.out.println(data);
//		}
		byte[] data = new byte[100];
		while(true) {
			int num = is.read(data);
			if(num==-1) break;
			for(int i=0; i<num; i++) {
				System.out.println(data[i]);
			}
		}
		is.close();

=> 바이트 입출력 스트림을 사용하여 이미지 파일 복사하기

		String original = "C:/Temp/testimg.jpg";
		String copy = "C:/Temp/testimg2.jpg";
		
		InputStream is = new FileInputStream(original);
		OutputStream os = new FileOutputStream(copy);
		
		byte[] data = new byte[100];
		
		
		while(true) {
			int num = is.read(data);
			if(num == -1) break;
			os.write(data, 0, num);
		}
		
		is.close();
		os.close();

자바 9부터 is.transferTo(os); 로 손쉽게 복사할 수 있는 메서드가 추가되었다고 하는데, 자바 8을 사용중이라 적용해보지 못 했다.

  1. 문자열 입출력 스트림
		FileWriter fw = new FileWriter("C:/Temp/test.txt");
		fw.write("hello java");
		fw.flush();
		fw.close();
		
		FileReader fr = new FileReader("C:/Temp/test.txt");
		char[] data = new char[1024];
		while(true) {
//			int i = fr.read();
//			if(i==-1) break;
//			System.out.print((char)i);
			
			int i = fr.read(data);
			if(i==-1) break;
			for(int j=0; j<i; j++) {
				System.out.print((char)data[i]);
			}
			
		}
        fr.close();

0개의 댓글