비트 연산자는 데이터를 비트 단위로 연산합니다. 그러므로 0과 1로 표현이 가능한 정수 타입이나 정수형으로 캐스팅이 가능한 자료형만 비트 연산이 가능합니다. 비트 연산자는 기능에 따라 비트 이동연산자, 비트 논리연산자로 구분합니다. 비트 이동 연산자(, >>>) 연산식 설명 x > y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 정수 a의 최상위 부호비트와 같은 값으로 채워집니다. x >>> y 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. (빈자리는 0으로 채워집니다.) 비트 이동 연산자는 정수 데이터의 비트를 왼쪽 또는 오른쪽으로 이동시키는 연산을 합니다. 2 3 -16 >> 3 16 >> 3 은 16을 32비트로 분해한다음 오른쪽으로 3비트를 이동시키는 연산입니다. 비트를..
최근 두가지 글을 포스팅했습니다. [Java] 자바로 폴더(디렉토리),파일 복사하기 [Java] 자바로 폴더(디렉토리) 삭제하기(하위파일, 폴더 포함) 위의 두가지 글이 바로 최근 포스팅했던 글들인데요. 자바로 폴더 및 파일을 이동시키는 방법은 위에 있는 두개의 포스팅을 합치면 구현하실 수 있습니다. 자바로 폴더(디렉토리),파일 이동시키기 1. 폴더 및 파일을 복사한다. 2. 복사했던 폴더 및 파일을 삭제시킨다. import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Move { public static void main(String[..
자바 File클래스에는 폴더에있는 모든 파일정보를 가지고 오는 메서드인 listFiles()라는 메서드가 존재합니다. 이 listFiles() 메서드와 File클래스의 파일생성 메서드인 mkdir()를 활용하면 쉽게 파일을 복사하실 수 있습니다. 자바로 파일 복사하기 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy{ public static void main(String[] args) { File folder1 = new File("D:\\Eclipse\\Java\\복사할폴더\\복사될폴더"); File folder2 =..
자바 소스로 폴더나 파일을 삭제할수도 있습니다. File.delete()함수를 활용하면 쉽게 구현이 가능한데요. 파일은 쉽게 삭제가 가능한데 문제는 폴더입니다. 폴더는 하위에 파일이 하나라도 남아있으면 File.delete()함수가 작동하지 않습니다. 그러므로 폴더를 삭제하기전에 폴더안에있는 파일을 삭제해주는 작업을 선행하셔야합니다. 폴더안의 파일들을 제거한 뒤 대상 폴더제거 import java.io.File; public class Delete { public static void main(String[] args) { String path = "D:\\Eclipse\\Java\\새 폴더"; File folder = new File(path); try { while(folder.exists()) { ..
이번 포스팅에서는 해당 위치에 원하는 폴더가 없을 경우 새로이 폴더를 하나 만들어주는 방법에 대해 알아보겠습니다. File클래스안의 mkdir이라는 메서드를 활용하여 간단히 구현할 수 있습니다. 원하는 위치에 디렉토리가 없을경우 디렉토리 자동생성 import java.io.File; public class MkDir { public static void main(String[] args) { String path = "D:\\Eclipse\\Java\\새폴더"; //폴더 경로 File Folder = new File(path); // 해당 디렉토리가 없을경우 디렉토리를 생성합니다. if (!Folder.exists()) { try{ Folder.mkdir(); //폴더 생성합니다. System.out.p..
File 클래스 Java.io패키지에서 제공하는 File클래스는 파일 크기, 파일 속성, 파일 이름 등의 정보를 얻어내는 기능과 파일 생성 및 삭제 기능을 제공하고 있습니다. 그리고 디렉토리를 생성하고 디렉토리에 존재하는 파일 리스트를 얻어내는 기능도 있습니다. 이번 포스팅에서는 이 File클래스와 출력스트림을 활용하여 텍스트(txt)파일을 생성해보고 이것을 입력스트림을 활용하여 읽어오는 예제를 한번 만들어보도록 하겠습니다. 1. txt 파일로 데이터 저장하기 package InputOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class OutputST..
데이터 입출력 프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번하게 일어납니다. 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력될 수도 있고, 파일 또는 네트워크를 통해 입력될 수도 있습니다. 또 반대로 데이터를 사용자에게 모니터나 파일등으로 출력할수도 있습니다. 자바 입출력과 스트림(Stream) 자바에서 데이터는 스트림(Stream)을 통해 입출력 됩니다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데 물이 높은 곳에서 낮은곳으로 흐르듯이 데이터는 출발지에서 나와 도착지로 흘러간다는 개념입니다. 프로그램이 출발지냐 또는 도착지냐에 따라서 스트림의 종류가 결정되는데, 프로그램이 데이터를 입력받을 때에는 입력(InputStream)이라고 부릅니다. 입력스트림의 출발지..
Error(에러)와 Exception(예외의 차이) 에러(Error)란 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램에 이상이 생겼거나 JVM 실행에 문제가 생겼을 경우 발생하는것을 말합니다. 이 경우 개발자는 대처할 방법이 극히 제한적입니다. 하지만 예외(Exception)은 다릅니다. 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말합니다. 예외가 발생하면 프로그램이 종료가 된다는것은 에러와 동일하지만 예외는 예외처리(Exception Handling)을 통해 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있습니다. 자바에서 예외처리는 Try Catch문을 통해 해줄 수 있습니다. 여러가지 예외들 예외 구문 이유 ArithmeticEx..
Thread란? 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미합니다. 스레드와 태스크(혹은 작업)은 바꾸어 사용해도 무관합니다. 1. JVM에 의해 하나의 프로세스가 발생하고 main( ) 안의 실행문 들이 하나의 스레드입니다. 2. main( ) 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현합니다. 3. 다중 스레드 작업 시에는 각 스레드 끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있습니다. 4. 프로세스끼리는 정보를 주고받을 수 없습니다. 멀티스레딩이란? 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법을 말합니다. 장점 1...
프로토콜란? 프로토콜이란 클라이언트와 서버간의 통신 규약입니다. 프로토콜의 분석방법 먼저 클라이언트가 보낸 메시지를 서버에서는 “##”를 구분자로 문자열을 토큰하여 문자를 분석하게 됩니다. 만약 이런 규약을 클라이언트가 위배하여 메시지의 순서를 바꾼다든지, 부적절 한 메시지를 보내게 되면 서버에서는 이를 파악하지 못하고 항상 동일한 처리를 하게 되기 때문에 다른 클라이언트에게 적절치 못한 메시지를 전송하게 됩니다. 프로토콜의 설계기법 프로토콜의 설계는 클라이언트와 서버간의 통신 규약을 만드는데 필요한 데이터가 무엇인지 를 설계하는 것입니다. 프로토콜의 설계 하기위해서는 클라이언트에서 필요한 기능이 무엇인지를 생각하고, 그 기능 에 대해 필요한 데이터가 어떤 것이 있는지를 분석할 수 있는 능력이 있어야 합..
유니캐스팅과 멀티캐스팅 1. 클라이언트와 서버간의 지속적으로 일대 일로 통신하는 개념을 유니 캐스팅이라고 합니다. 2. 일대 다의 통신을 멀티 캐스팅이라고 합니다. 유니 캐스팅 유니 캐스팅을 구현하기 위해서는 필수 조건이 서버측에 스레드를 생성해서 TCP 소켓을 유지 해야 합니다. 멀티 캐스팅 유니 캐스트 모델은 실시간 프로그램에서 서버의 정보를 모든 클라이언트가 공유할 때 문제점이 있는데 이런 문제를 해결할 수 있는 방법이 일대 다 전송을 지원하는 멀티 캐스팅 방법입니다. 한명의 클라이언트가 서버의 정보를 변경했을 경우 모든 클라이언트에게 전송함으로써 서로가 변경된 정보를 공유할 수 있는 애플리케이션을 만들 때 적합합니다. 또한 멀티 캐스팅 프로그램을 작성하기 위해서는 유니캐스트에서 생성된 스레드를 저..
UDP(User Datagram Protocol 1. UDP는 비 연결 지향이고, IP 위에 매우 얇은 레이어로 구성되어 있습니다. 2. UDP를 사용하는 애플리케이션은 TCP 프로그램에 비해 제어를 할 수 있는 부분이 적습니다. 3. UDP는 데이터를 전송할 때에 데이터가 잘 도착했는지 알아낼 방법이 없으며, 데이터를 보낸 순서대로 도착한다는 보장도 할 수 없습니다. 4. UDP는 TCP에 비해 훨씬 빠르게 전달된다는 장점이 있습니다. DatagramPacket 클래스 1. UDP 데이터그램은 java.net.DatagramPacket 클래스로 추상화한 것입니다. 2. DatagramPacket 클래스는 애플리케이션에서 주고 받을 데이터와 관련된 클래스이고, DatagramSocket 클래스는 실제 데..
TCP 통신방식이란? 1. TCP란 소켓 프로그래밍 중의 하나로 스트림 통신 프로토콜이라고 부르며, 양쪽의 소켓이 연결된상태여야만 가능 하기 때문에 연결지향 프로토콜이라고도 합니다. 2. TCP 프로토콜은 신뢰성 있는 프로토콜이기 때문에, 송신한 쪽의 데이터가 수신 측에 차례대로, 중간에 유실되는 일 없이 도착 하는 것을 의미합니다. 그러려면 수신 측과 송신 측이 미리 연결을 맺고 연결된 순서대로 데이터를 교환해야 합니다. 3. 연결지향 방식은, 한번 연결되면 연결이 끊어질 때까지는 송신한 데이터가 차례대로 목적지의 소켓에 전달되는 신뢰성 있는 통신이 가능합니다. 4. 이렇게 신뢰성 있는 TCP 연결을 하기 위해서는 TCP 프로그래밍에서 사용하는 라이브러리의 사용 방법과 동작 순서를 정확하게 숙지, 이해..