비투즈의 노트르담

전체 글 (58)

  1. 2013.04.05 자바 파일 입출력 3 - 문자스트림

    문자스트림 앞에서 말하는 것과 마찬가지로 파일입출력부분은 개념을 알고들어가야 되는 것같습니다. 문자스트림에 앞서서 바이트스트림과 문자스트림이 차이점을 알아야됩니다. "난 정말 자바 XX" 에 설명이 잘나와있습니다. 736페이지에 나와있습니다. 이 설명을 말하자면, 자바는 유니코드 기반으로 되어있는데, Windows자체에서 실행되는 응용프로그램들은 Windows만의 인코딩 방식이 있을 것입니다. 그러므로, Windows의 문자표현 방식으로 문자를 저장할려고하면, 문자 A를 1바이트 정수 65, 문자 B를 정수 66으로 표현합니다. 이런식으로 인코딩 방식을 알아야합니다. 이런 불편한 요소를 해결하기위해 자동으로 인코딩을 해주는 문자스트림을 만들었습니다. 문자단위의 파일 입력스트림과 출력스트림은 FileRea..

  2. 2013.04.01 자바 파일 입출력 2 - Filter Stream

    자바 파일 입출력 (I / O) - Chapter : 2 필터 스트림 자바에서는 스트림 앞에 달수 있는 다양한 필터스트림을 제공합니다. 즉, 필터스트림은 가공하는 도구라고 생각하면 이해하기 쉽습니다. 난 정말 자바 XX가 설명이 잘 되어 있어 이 책의 내용을 참고해서 말할려고 합니다. 예를 들면 "int형 정수 하나를 읽어 들이는 코드를 작성할려고 한다." 예전 방식으로 하면, ex) InputStream in = new FileInputStream("Hci.bin"); byte[] buf = new byte[4]; is.read(buf); 이런 식으로하면, byte라는 배열에 담긴거지 int형 변수라고 애기할 수 없는 것들은 다 아실 겁니다. 그러므로, 이런 방식으로 사용하면, 정수로 활용하기 곤란합니..

  3. 2013.04.01 자바 파일 입출력

    파일 입출력(File I / O) 먼저 자바 파일 입출력에 들어가기 앞서서 개념을 정확히 들어가야 됩니다. 파일 입출력의 대상의 Consol, 키보드와 모니터, 하드디스크에 저장되어 있는 파일, USB, 프린터 등등이 있는데, 입출력 대상의 형태가 다양하듯이 파일에서의 입출력 형태도 다른데요. 자바에서는 두가지가 네트워크 입출력 기본방식을 편안하게 해준다고 생각합니다. 1. 입출력의 기본 방식이 동일합니다. 2. 네트워크 상에서의 데이터를 송수신하기위해서 I / O클래스들의 잘 정의되어 있습니다. 그러므로, 자바네트워크 프로그래밍은 좋다 라고 말할 수 있습니다. I/O 의 핵심은 스트림(Stream)을 이해하는데 있는데, 자바에서는 1) 데이터의 흐름을 형성해 주는 통로, 2) 파일 또는 각종 I/O장치..

문자스트림

 

앞에서 말하는 것과 마찬가지로 파일입출력부분은 개념을 알고들어가야 되는 것같습니다.

문자스트림에 앞서서 바이트스트림과 문자스트림이 차이점을 알아야됩니다.

"난 정말 자바 XX" 에 설명이 잘나와있습니다. 736페이지에 나와있습니다.

이 설명을 말하자면,

자바는 유니코드 기반으로 되어있는데,  Windows자체에서 실행되는 응용프로그램들은 Windows만의 인코딩 방식이 있을 것입니다.

그러므로, Windows의 문자표현 방식으로 문자를 저장할려고하면, 문자 A를 1바이트 정수 65, 문자 B를 정수 66으로 표현합니다.

이런식으로 인코딩 방식을 알아야합니다.

 

이런 불편한 요소를 해결하기위해 자동으로 인코딩을 해주는 문자스트림을 만들었습니다.

 

문자단위의 파일 입력스트림과 출력스트림은

FileReader, FileWriter의 대표적인 클래스입니다.

 

 

 

 

 

필터스트림 을 추가할 수있는데요. 문자스트림은 바이트 스트림의 입출력 버퍼 필터스트림을 사용하지 않고,

문자스트림의 버퍼 필터 스트림을 사용합니다.

BufferedReader, BufferedWriter

api문서에서 BufferedReader in = new BufferedReader(new FileReader("foo.in")); 이렇게 쓰라고 말합니다.

또한 Buffering없이 사용하는 것은 비효율적이라고 말합니다.

BufferedReader의 대표적인 클래스입니다. API문서 캡쳐한건데, 밑에 보시면 쉽게 이해가 가실거라 따로 설명안하겠습니다.

 

 

 

 

마지막 문자스트림중에 하나 PrintWriter

"지문이 텍스트 출력 스트림에 객체의 표현 형식이. 이 클래스는 PrintStream에있는 인자 메소드를 모두 구현합니다. 프로그램은 인코딩되지 않은 바이트 스트림을 사용해야하는 원시 바이트 작성하는 방법을 포함하지 않습니다."

일케 API문서에 나와있는데요.

PrintStream은

System.out에는  public static void PrintStream out; 일케 되어있고, 다양한 형태의 데이터를 문자열의 형태로 출력가능하고, 조합하여 출력합니다. printf, println


"자동 플러싱이 활성화 된 경우 PrintStream 클래스와는 달리, 그것은 오히려 줄 바꿈 문자 출력 생길 때마다보다 println, printf, 또는 형식 방법 중 하나가 호출 될 경우에만 수행됩니다. 이러한 방법은 오히려 줄 바꿈 문자보다 분리기의 플랫폼 고유의 개념을 사용합니다."

 

이 말이 무엇이냐면, C언어 하신분은 알겠지만, printf("안녕하세요 ~ \n"); 개행문자를 집어넣었지만. 개행처리가 되지않고,

println을 사용할때 개행처리가 된다는 애기고요.

 

밑에는 사용하는 방법입니다.

ex) PrintWriter out = new PrintWriter(new FileWriter("1.txt");

out.printf(" hahaha");

out.println("olleh");

out.close();

 

이런식으로 사용하면됩니다.

이 클래스의 메소드 생성자 중 일부는 수 있지만 I / O 예외를 throw하지 않습니다.클라이언트는 오류가 checkError ()를 호출하여 발생했는지의 여부를 조회 할 수 있습니다.

'프로그래밍 > 자바' 카테고리의 다른 글

토큰(Token)  (0) 2013.04.10
레이아웃(Layout) & 패널(Panel)  (0) 2013.04.05
이벤트 & 그래픽  (0) 2013.04.05
자바 파일 입출력 2 - Filter Stream  (0) 2013.04.01
자바 파일 입출력  (0) 2013.04.01

자바 파일 입출력 (I / O) - Chapter : 2

필터 스트림

 

자바에서는 스트 앞에 달수 있는 다양한 필터스트림을 제공합니다.

즉, 필터스트림은 가공하는 도구라고 생각하면 이해하기 쉽습니다.

 

난 정말 자바 XX가 설명이 잘 되어 있어 이 책의 내용을 참고해서 말할려고 합니다.

 

예를 들면 "int형 정수 하나를 읽어 들이는 코드를 작성할려고 한다."

예전 방식으로 하면,

ex)

InputStream in = new FileInputStream("Hci.bin");

byte[] buf = new byte[4];

is.read(buf);

이런 식으로하면, byte라는 배열에 담긴거지 int형 변수라고 애기할 수 없는 것들은 다 아실 겁니다.

그러므로, 이런 방식으로 사용하면, 정수로 활용하기 곤란합니다.

그래서 byte 단위로 읽히는 데이터를 int형 정수로 조합해서 단번에 int형 데이터로 반환해주는 뭔가가 필요하다고 생각해서

앞에 필터를 달 방법을 생각해 냈습니다. 필터를 달아서 가공해서 int형 데이터가 나오게끔 하는 필터 말입니다!!!

 

제가 필터스트림을 가공하는 도구라고 했는데,

예를 들면, 스도꼭지에 샤워 필터라든지 달면, 물줄기가 달라집니다. 이런 것과 비슷한 예라고 생각해면됩니다.

 

필터스트림은 두가지로 나뉩니다.

필터 입력 스트림, 필터 출력 스트림 

 

1.기본 자료형 단위로 데이터를 읽고 쓰게 하는 필터 스트림 에 대해 소개하겠습니다.

DataInputStream과 DataOutputStream을 각각 입력 스트림과 출력스트림에 연결하면 됩니다.

 

 

2. 버퍼링 기능을 제공하는 필터 스트에 대해 소개하겠습니다.

먼저 버퍼의 개념이 무엇인지 알아야합니다. 컴퓨터의 주기억 장치와 주변장치 사이에서 데이터를 주고받을 때, 둘 사이의 전송속도 차이를 해결하기 위해 전송할 정보를 임시로 저장하는 고속 기억장치입니다.

연결하는 방법은 위와 동일합니다.

BufferedInputStream과 BufferedOutputStream 버퍼 필터 입력 스트림과 버퍼 필터 출력 스트림에 똑같이 연결합니다.

 

 

 

 

'프로그래밍 > 자바' 카테고리의 다른 글

토큰(Token)  (0) 2013.04.10
레이아웃(Layout) & 패널(Panel)  (0) 2013.04.05
이벤트 & 그래픽  (0) 2013.04.05
자바 파일 입출력 3 - 문자스트림  (0) 2013.04.05
자바 파일 입출력  (0) 2013.04.01

파일 입출력(File I / O)

 

먼저 자바 파일 입출력에 들어가기 앞서서 개념을 정확히 들어가야 됩니다.

파일 입출력의 대상의 Consol, 키보드와 모니터, 하드디스크에 저장되어 있는 파일, USB, 프린터 등등이 있는데,

입출력 대상의 형태가 다양하듯이 파일에서의 입출력 형태도 다른데요.

 

자바에서는 두가지가 네트워크 입출력 기본방식을 편안하게 해준다고 생각합니다.

1. 입출력의 기본 방식이 동일합니다.

2. 네트워크 상에서의 데이터를 송수신하기위해서 I / O클래스들의 잘 정의되어 있습니다.

그러므로, 자바네트워크 프로그래밍은 좋다 라고 말할 수 있습니다.

I/O 의 핵심은 스트림(Stream)을 이해하는데 있는데, 

자바에서는 1) 데이터의 흐름을 형성해 주는 통로,

                 2) 파일 또는 각종 I/O장치와의 데이터 이동에 사용되는 인스턴스(객체)를 의미

하는 두가지 용도로 사용됩니다.

입력 스트림(Input Stream) : 프로그램으로 데이터를 읽어들이는 스트림

출력 스트림(Output Stream) : 프로그램으로부터 데이터를 내보내는 스트림

 

ex) run.exe라는 파일에 저장된 데이터를 읽어들이기 위한 스트림을 형성한다고 가정하면

 InputStream in = new FileInputStream("run.exe"); -> 이문장을 통해 간단한 스트림 형성 가능하다

 InputStream in = new GDInputStream("0x2046");

1.  스트림이 형성이 결국은 인스턴스(객체)생성한다.

2.  FileInputStream 클래스는 InputStream클래스를 상속한다

-> 즉, FileInputStream클래스는 파일과 입력스트림 형성을 위한 클래스라고 한다.

라고, 난 정말 자바 XX에서 자세히 잘 나와있습니다.

 

그럼 Input Stream클래스와 Output Class클래스에 대해서 알아보면...

 

Input Stream클래스는 대표적인 클래스로 두가지가 있다고 합니다.

 

여기서 캐치할 점은 byte 데이터 수의 범위는 반환 int범위로 0 ~ 255 라고 나와있고,

스트림끝에 도달하여 데이터가 존재하지 않으면 -1을 반환

I/O에러 발생을 예방하기위해 Exception을 던진다.를 파악할 수 있습니다.

또한 추상화를 왜 했는지 의문을 가져야 합니다.

추상화는 앞에서 설명한대로 데이터를 읽어들이는 기본방식은 대상에 따라서 차이가 날 수밖에 없기 때문에 추상화를 사용했습니다.

시스템을 차단하고 inputStream을 차단하는데 쓰인다 는 것을 알 수 있습니다.

 

 

 

위와 보는 봐와 같이 read랑 거의 비슷한데요.

이 출력스트림은 지정된 바이트를 사용하고 일반적으로  write는  1바이트가 출력 스트림에 기록된다는 점입니다.

그리고 매개변수를 4바이트를 썻으니깐, 위의 영어를 해독하면, 하위 8비트(1바이트)만 전달하고 24비트(3바이트)는 무시된다고 알려줍니다.

 

파일 입출력부분은 이런식으로 분석해나가면서 개념을 쌓아가는게 좋을 듯 싶습니다...

저 개인적인 의견이니, 잘못된 의견 받겠습니다.

- Yang -

'프로그래밍 > 자바' 카테고리의 다른 글

토큰(Token)  (0) 2013.04.10
레이아웃(Layout) & 패널(Panel)  (0) 2013.04.05
이벤트 & 그래픽  (0) 2013.04.05
자바 파일 입출력 3 - 문자스트림  (0) 2013.04.05
자바 파일 입출력 2 - Filter Stream  (0) 2013.04.01