이파일을 그림파일로 바꿔보기
package kh.java.test;
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class ImageStream {
public void main() {
try(BufferedReader br = new BufferedReader(new FileReader("quiz.txt"));
FileOutputStream fos = new FileOutputStream("test.gif")){
//quiz.txt파일을 읽어온후 값을 test.gif로 내보낼것이다.
//text는 문자형태로 읽어오는거라 Reader을 쓴거고
//내보낼것은 그림형식이라 파일을 내보낼것이기 때문이다.
//내보낼때는 byteStream쓸것이다.
//문자의 최고 는 Reader/Writer이고
//바이트의 최고는 InputStream, OutputStream이다.
//문자를 읽어오는거라 Reader을 썼고
//내보는거라 OutputStream을 썼다.
ArrayList<Byte> a1 = new ArrayList<>();
StringTokenizer sT = new StringTokenizer(br.readLine(), " ");
//readLine라는건 한줄단위로 읽어오는 것이다.
//결론적으로 quiz.txt라는것에서 한줄을 읽어온다.
//Token은 Token단위로 데이터를 끊어서 저정할때 썼다.
//공백단위로 값을 주기때문에 공백으로 하였다.
//한줄 읽어오는데 공백단위로 끊었다.
//sT라는곳에 원하는 데이터가 있을것이다.
//그걸 arrayList에넣어주겠다.
while(sT.hasMoreTokens()) {
//꺼내올 데이터가 있으면 true, 없으면 false
a1.add((byte)(Integer.parseInt(sT.nextToken(),16)));
//여기에 올 진수는 16진수야 이걸 10진수로 바꿔
//Integer을쓰면 int형태로 바꾸는데 이걸16진수로 바꿔서 넣어.
//byte이므로 형변환을 해줄것이다.
//byte타입으로 형변환 하였고
//정수로 반환 받을것인데 nextToken으로 16진수라고 명시해놓았다.
//그걸 꺼내서 10진수로 바꿔서 그걸 arrayList에넣어줄것이다.
//중복될수도있고 파일의 끝도 모르므로 arrayList에 넣을것이다.
//지금까진 스트림으로 연결후 파일을 받아와서 arrayList에저장까지한상태이다.
}
for(int i=0; i<a1.size();i++) {
fos.write(a1.get(i));
}//arrayList를 하나씩 받아와서 이걸 fos에다가 저장을 해서 파일을 만들것이다.
//arrayList처음부터 마지막까지 반복해라.
System.out.println(a1);
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}
}
================================================================
package kh.java.run;
import kh.java.test.Exam1;
import kh.java.test.ImageStream;
public class Run {
public static void main(String[] args) {
//Exam1 e = new Exam1();
//e.primaryStream();//한글입력이된다.
//e.subStream();//한글이 입력이 안된다.
//e.charPrimaryStream();//한글이 입력이 된다.
//e.charSubStream();//한글이랑 영어 전부다 입력된다. 아까꺼의 새로운버전
ImageStream i = new ImageStream();
i.main();
}
}
'IT일반과목 > java' 카테고리의 다른 글
20180807 입출력 오늘 총 한것(학원) (0) | 2018.08.07 |
---|---|
16진수 10진수 바꾸는 코드 (0) | 2018.08.07 |
자바 IO 수업1 (0) | 2018.08.07 |
memberShipProject (1) | 2018.08.06 |
자바 콜렉션(실습) - 로또 (0) | 2018.08.06 |