JAVA: 282개의 글
serialVersionUID 이란? Warning 해결하기 객체를 파일에 쓰거나 전송하기 위해서는 직렬화를 해야 하는데 그러기 위해 객체 클래스에 Serializable 인터페이스를 implements 하게 된다. [JAVA] 객체 직렬화 ObjectInputStream / ObjectOutputStream 하지만 Serializable 인터페이스를 implements 하게 되면 노란색 Warning이 발생한다. The serializable class *** does not declare a static final serialVersionUID field of type long 저렇게 Warning이 발생하지만 동작하는데는 문제가 없다. 그래도 계속 저렇게 Warning이 떠있는데 왜 생기는 것이며 ..
객체 직렬화 ObjectInputStream / ObjectOutputStream 객체 스트림은 프로그램 메모리상에 존재하는 객체를 직접 입출력해 줄 수 있는 스트림으로 현재 상태를 보존하기 위한 영속성을 지원할 수 있다. 자바에서 객체 안에 저장되어 있는 내용을 파일로 저장하거나 네트워크를 통하여 다른 곳으로 전송하려면 객체를 바이트 형태로 일일이 분해해야 한다. 이를 위하여 객체를 직접 입출력 할 수 있도록 해주는 객체 스트림이다. 1. 객체 전송의 단계 객체를 분해하여 전송하기 위해서는 직렬화(Serialization) 되어야 한다. 객체를 전송하기 위해서는 3가지 단계를 거친다. (1) 직렬화된 객체를 바이트 단위로 분해한다. (marshalling)(2) 직렬화 되어 분해된 데이터를 순서에 따라..
I/O Char 와 Encoding 데이터는 다양한 종류가 있다. 이미지, 오디오, 비디오, 바이너리 파일 등이 있지만 가장 많이 사용하는 것은 문자이다.따라서 문자의 형태를 직접 읽고 쓰기 위한 클래스가 제공되는데 이때 인코딩(Encoding)이 사용된다. 1. ASCII 코드와 한글 자바는 영미권에서 만들어져서 영어로 입출력할 때는 문제가 없지만 제 3의 언어로 입출력을 실행하면 문제가 발생하는 경우가 많다. 이것은 각 문자의 인코딩과 관련 문제이다. (1) ASCII 코드 영어를 사용할 때는 알파벳 소문자 대문자 52개의 문자와 10진수 숫자 10개가 필요하다. 그리고 쉼표, 따옴표, 물음표 등등의 문장 부호들이 60개 정도가 지정되어 있다.따라서 영어를 사용하기 위해서는 120개 정도의 개수가 필..
I/O 입출력 클래스의 종류 JAVA의 I/O는 java.io 패키지에 클래스가 정의되어 있는 경우가 대부분이다. (최근에는 nio 등이 나왔다.) JAVA의 초기에는 입출력 클래스도 단순하였다. 단순히 바이트 단위의 입출력만 지원했지만, 현재는 계속적으로 확장되며 문자 단위의 입출력 뿐만 아니라 다양한 기능을 지원하는 클래스들이 생겨났다. 1. I/O 클래스의 이름과 의미 Stream으로 끝나는 클래스 : 바이트 단위로 입출력을 수행하는 클래스Reader / Writer로 끝나는 클래스 : 캐릭터 단위로 입출력을 수행하는 클래스File로 시작하는 클래스 : 하드디스크의 파일을 사용하는 클래스Data로 시작하는 클래스 : 자바의 원시 자료형을 출력하기 위한 클래스Buffered로 시작하는 클래스 : 시스..
문자 Stream : BufferedReader / BufferedWriter (파일 복사 예제) BufferedReader / BufferedWriter는 문자 입력 스트림으로부터 문자를 읽어 들이거나 문자 출력 스트림으로 문자를 내보낼 때 버퍼링을 함으로써 문자, 문자 배열, 문자열 라인 등을 보다 효율적으로 처리할 수 있도록 해준다. InputStreamReader / OutputStreamWriter를 사용하는 경우는 한 문자씩 읽지만 버퍼링을 하게 되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적으로 입출력할 수 있다. BufferedReader / BufferedWriter는 BufferedInputStream / BufferedOutputStream과 기능이 비슷..
문자 Stream : FileReader / FileWriter File Reader와 FileWriter는 파일에 저장된 바이트를 유니코드 문자로 변환해서 읽어 들이거나 출력할 유니코드 문자를 디폴트 문자 인코딩의 바이트로 변환해서 파일에 저장하는 데 사용되는 입출력 클랙스이다. File Reader와 FileWriter는 각각 InputStreamReader나 OutputStreamWriter의 하위 클래스로 유니코드 문자와 바이트간의 변환 기능을 포함하고 있다. [JAVA] 문자 Stream : Reader / Writer[JAVA] 문자 Stream : InputStreamReader / OutputStreamWriter * FileReader / FileWriter 의 생성자 FileReader..
문자 Stream : InputStreamReader / OutputStreamWriter Stream은 바이트 단위는 바이트 단위로 연결하고 캐릭터 단위는 캐릭터 단위로 연결하는 것이 원칙이다. 하지만 캐릭터는 결국 바이트 2개가 모여서 구성한 데이터로 볼 수 있다. 따라서 두 가지 서로 다른 기준을 호환할 수 있는 통로가 제공되어야 한다. 이 두 클래스는 Stream 이라는 말고 Reader/Writer 라는 말을 동시에 가지고 있다.결론적으로 이 두 클래스는 둘 사이의 연결을 담당한다고 볼 수 있다. Stream : 바이트 단위의 입출력Reader/Writer : 캐릭터 단위의 입출력 InputStreamReader / OutputStreamWriter는 바이트 스트림에서 문자 스트림으로, 또는 문..
문자 Stream : Reader / Writer 문자 Stream은 16비트 문자나 문자열들을 읽고 쓰기 위한 스트림이고 모두 Reader / Writer의 하위 클래스이다. 문자 입출력 스트림은 영어 이외의 문자에 대한 처리와 문자 인코딩을 내부에서 처리해 주고, 유니코드를 지원하는 자바 특성에 맞게 2바이트 크기의 입출력을 한다. 따라서 문자 스트림을 이용하게 되면 특별한 문자 인코딩에 독립적인 프로그램을 작성할 수 있고 일반적으로 구현에서도 더 효율적일 수 있다. Reader / Writer 는 문자 입출력을 담당하는 추상 클래스로 다른 문자 입출력 클래스들에 대한 최상위 클래스이다. Byte Stream의 최상위 클래스로 InputStream / OutputStream 클래스가 있듯이 Chara..
ByteStream : DataInputStream / DataOutputStream DataInputStream과 DataOutputStream은 자바의 기본 자료형 데이터를 바이트 스트림으로 입출력하는 기능을 제공하는 ByteStream 클래스이다. DataInputStream과 DataOutputStream 은 FilterInputStream과 FilterOutputStream을 상속하고 있어, 객체 생성시에 InputStream과 OutputStream을 매개변수 인자로 가진다. [JAVA] ByteStream : FilterInputStream / FilterOutputStream 이 클래스와 입출력 장치를 대상으로 하는 입출력 클래스를 같이 이용하면 자바의 기본 자료형 데이터를 파일 등 입출력..
ByteStream : BufferedInputStream / BufferedOutputStream (파일 복사 예제) BufferedInputStream과 BufferedOutputStream은 FilterStream을 상속하여 실제 필터 기능을 제공하는 클래스이다. [JAVA] ByteStream : FilterInputStream / FilterOutputStream FileInputStream /FileOutputStream 에서 이야기한 것처럼, 1 Byte 단위로 입/출력이 이루어지면 기계적인 동작이 많아지므로 효율이 떨어지게 된다.또한, 사용자가 일일이 버퍼와 크기를 지정하여 입출력을 하게 되는 것도 정적이고 불편하다. [JAVA] ByteStream : FileInputStream / Fi..