정보보안공부
Java2_day11 본문
*** n01.file_ex - FileInputStreamEx : 바이트 기반 출력할때 write(rBytes)사용
-> FileInputStream fin = new FileInputStream("C:/Temp2/test.txt");
로컬디스크C에 Temp2폴더에 test.txt파일을 만들어 놓고 위문장 선언
파일입력 -> main()처리 -> Std output
-> int rBytes, int count =0 선언 count는 while문이 몇번도는지 확인하기위해서
-> while(true) { //while문 무한히 반복하도록 (true)로 설정
rBytes = fin.read() //입력 스트림에서 데이터를 읽기(한 바이트 읽기)
read() : 리턴값은 읽은 내용( 0~255 ),
-> if(rBytes == -1) break;
rBytes가 -1이면 파일의 끝
-> System.out.write(rBytes) //출력 스트림으로 데이터 쓰기
write() 바이트 -> 바이트 전달해서 출력
-> System.out.println(rBytes) //바이트 -> 문자열로 처리하는 과정에서 오류
-> System.out.print((char)rBytes) //바이트 -> 문자열로 처리하는 과정 한글 오류
-> count++; while문 몇번도는지 확인, 읽은 바이트수도 확인
System.out.println("\n읽은 바이트 수 : " + count);읽은 바이트 수 출력
-> fin.close() //로 파일을 닫아준다.
-> fin = new FileInputStream("C:/Temp2/test.txt");
파일이 위에서 끝까지 읽여져, 다시 객체 생성하여 포인터를 처음으로 한다.
-> int cnt; byte[] buf = new byte[100]; String data = ""; count = 0;
-> while(true) { cnt = fin.read(buf,0,buf.length); cnt = fin.read(buf)
둘다 같은의미, 입력스트림으로 데이터 읽기
-> if(cnt == -1) break; //cnt가 -1이면 파일의 끝
System.out.write(buf); //출력스트림으로 데이터 쓰기
-> data += new String(buf,0,cnt); //cnt : 읽은 수만큼, 배열을 String으로
System.out.print(data); 로 출력가능하다.
-> count++;
System.out.println(count); byte[100]으로 되있는데 test파일의 바이트가91이므로
while문이 1번실행된다.
*** n01.file_ex - FileReaderEx : 문자기반 출력할때 print((char)rBytes)사용
-> FileReader fin = new FileReader("C:/Temp2/test.txt");
로컬디스크C에 Temp2폴더에 test.txt파일을 만들어 놓고 위문장 선언
파일입력 -> main()처리 -> Std output, 문자기반 파일입력
-> FileReader fin = new FileReader("C:/Temp2/test2.txt"); test2파일 존재하지 않을때
try{선언부터 finclose()까지} catch(FileNotFoundException e)
{System.out.println(e.getMessage());} 로 에러방지가능하다.
-> throws Exception선언 안하는 대신 같은의미로는
try{선언부터 finclose()까지} catch(IOException e) { }으로 선언하면 같은의미이다.
-> int rBytes, int count =0 선언 count는 while문이 몇번도는지 확인하기위해서
-> while(true) { //while문 무한히 반복하도록 (true)로 설정
rBytes = fin.read() //입력 스트림에서 데이터를 읽기(문자로)
read() : 리턴값은 읽은 내용( 문자단위 ),
-> if(rBytes == -1) break;
rBytes가 -1이면 파일의 끝
-> System.out.write(rBytes) //출력 스트림으로 데이터 쓰기
write() 문자 -> 바이트 전달해서 출력, 한글 깨진다.
-> System.out.println(rBytes) //문자 -> 문자열로 처리하는 과정에서 한글오류
-> System.out.print((char)rBytes) //한글, 정상출력
-> count++; while문 몇번도는지 확인, 읽은 문자수도 확인
System.out.println("\n읽은 문자 수 : " + count);읽은 문자 수 74 출력
-> fin.close() //로 파일을 닫아준다.
*** n01.file_ex - FileOutputStreamEx
-> FileOutputStream fout = new FileOutputStream("C:/Temp2/jkh.txt");
만들고자하는 파일형식을 원하는 위치로 설정
-> int b; int count = 0;
-> while((b=System.in.read() != -1) {
fout.write(b); //입력하고 ctrl + z하면 종료후 파일생성
count++; }
-> while(true) { b = System.in.read(); if(b == -1) break;
fout.write(b);
count++; } 같은 표현
-> System.out.println("\n입력 바이트 수 : " + count); 입력된 바이트 +2가 출력
fout.close(); 파일을 닫아준다.
***n01.file_ex - FileCopy
-> InputStream fin = new FileInputStream("C:/Temp2/abc.txt");
-> OutputStream fout = new FileOutputStream("C:/Temp2/abccopy.txt");
File -> main -> File로 바이트 기반
-> int count = 0; int rBytes;
-> while(true) { rBytes = fin.read(); //fin으로 읽은것을 rBytes로
if(rBytes == -1) break;
fout.write(rBytes); //rBytes를 fout으로
count++;
-> System.out.println("파일 복사 바이트 수 : " + count);
-> fin.close(); fout.close();
***n01.file_ex - FileCopy2
-> FileCopy를 버퍼를 활용해서 작성
-> byte [] buf = new byte[1000]; int count = 0 int total = 0 int rBytes;
-> while(true) { rBytes = fin.read(buf);
if(rBytes == -1) break; fout.write(buf);
count++ total += rBytes;
-> System.out.println("파일 복사 실행 횟수 : " + count);
-> System.out.println("파일 복사 바이트 수 : " + total);
count로 1000바이트 크기의 버퍼가 몇번 반복됫는지 확인
total로 파일의 복사 총바이트 수 확인
'Language > Java2' 카테고리의 다른 글
Java2_day12 (0) | 2017.03.25 |
---|---|
Java2_day09 (0) | 2017.03.22 |
Java2_day08 (0) | 2017.03.21 |
Java2_day07 (0) | 2017.03.18 |
Java2_day06 (0) | 2017.03.17 |