정보보안공부

Java2_day11 본문

Language/Java2

Java2_day11

Steady_sp 2017. 3. 24. 13:01

*** 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
Comments