2017.03.11 14:27


javaservice.exe 란 33kb 짜리 파일 하나로 간단하게 윈도우 서비스에 등록 / 삭제가 가능하다. 

binary 패키지를 받아서 압축을 풀어보면 다양한 예제 파일이 같이 공존하니 충분히 참고가 될것이다. 
URL : http://forge.objectweb.org/projects/javaservice/ 

참고로 본인은 이런식으로 등록했다. 

testinstall.bat

set JAVA_HOME=c:\jdk
set JAVASERVICE=JavaService.exe

%JAVASERVICE% -install ${Service에 등록될 이름} %JAVA_HOME%/jre/bin/server/jvm.dll -Djava.class.path=%CLASSPATH% com.dasida.TestMain -params INSTALL_DIR=c:\test -out c:\out.log -err c:\err.log 
pause


testuninstall.bat

set JAVASERVICE=JavaService.exe
%JAVASERVICE% -uninstall ${Service에 등록된 이름}


Service 의 시작 과 중지도 간단하다. 

시작 > net start test 
중지 > net stop test

 

 

 

1. 우선 아래 파일을 다운로드 받으세요.

 

                instsrv_srvany.zip

 

 

instsrv.exe,srvany.exe 두개의 파일이 들어있습니다.

 

파일에 대한 설명은 techbug님의 블로그에서 발췌했습니다.

 

● instsrv.exe
   - exe 파일을 서비스로 등록시켜주는 프로그램
   - 등록시 : instsrv [서비스명] [등록할exe파일]
   - 삭제시 : instsrv [서비스명] remove
   - 더 자세한 내용은 usage 참조

 

● srvany.exe
   - Windows .NET 서비스 리소스킷

 


2. 압축을 푸시고 등록하고자 하는 프로그램과 같이 아무 디렉토리에나 넣어두세요.
    제 경우에는 C:\TroubleAlarmService 디렉토리에 instsrv.exe, srvany.exe,

    개발한 서버 프로그램을 같이 위치 시켰습니다.

 

 

3. 시작 → 실행 → cmd : 프로그램이 들어있는 디렉토리로 이동하여 아래 명령 실행

    C:\TroubleAlarmService> instsrv.exe TroubleAlarmService C:\TroubleAlarmService\srvany.exe

   
   TroubleAlarmService는 구동될 서비스 명이 됩니다. 각자 원하는 서비스 명을 입력하시면 됩니다.

 

 

4. 시작 → 실행 → regedit : 레지스트리 편집기 실행
   HKEY_LOCAL_MACHENE\SYSTEM\CurrentControlSet\Services 를 보면 등록하신 서비스 명으로

   폴더가 생성되어 있을겁니다.  제 경우에는 TroubleAlarmService가 되겠죠.. 폴더를 선택하고,

   마우스 오른쪽 '새로만들기 -> 키'를 선택합니다. 그러면 밑에 폴더가 하나 생성되는데요.

   폴더명을 Parameters로 해주세요.

 

 

5. Parameters 폴더를 선택하고 레지스트리 편집기 오른쪽 영역에서 마우스 오른쪽 버튼을 눌러서

   '새로 만들기 → 문자열값'을 선택하고 아래 처럼 입력합니다.


      이름 : Application
      값 : java -classpath c:\TroubleAlarmService TroubleAlarmService
  

   저장한 후 편집기를 닫습니다.

 

 

6. 서비스를 구동 시키는 일만 남았습니다. 두가지 방법이 존재합니다.
  

   시작 → 제어판 → 관리도구 → 서비스 : TroubleAlarmService 찾아서 시작
   시작 → 실행 → cmd                                   
   C:\> net start TroubleAlarmService
   C:\> net stop TroubleAlarmService


이렇게 하고 서비스가 동작하는 것을 확인했습니다.

 

 

 

일반적으로 Windows 에서의 Java Application은 Command Console을 사용하여 구동된다.

이 방식은 아래와 같은 단점을 가지고 있다. 

1. 사용자 실수로 인해 Command Console에 Mouse Click이 발생하면 Application이 Hold됨.
2. 사용자가 Logout하면 해당 Application이 종료됨.
3. 특별히 제약이 없는 경우 터미널 서버나 원격 데스크탑 Application을 사용하여 같은 Application을

    각 User별로 계속 구동할 수 있음.

이런 단점을 극복하기 위해 Unix에서는 Background Process로 구동시키면 되지만,

Windows는 그 태생이 End User를 위한 DeskTop이기에 그 개념이 없다.

그와 유사한 개념이 Windows Service이다.
그러나 애석하게도 현재 JDK는 Windows Service를 사용하는 API를 제공하고 있지는 않다.

그로 인해 Apache나 InstallAnywhere등의 Application 벤더들은 그들만의 방법으로 Service등록을

가능하게 해서 사용하고 있는 실정이다.

지금 제시할 방법은 이러한 Java Application을 Windows Service로 등록하는 간단한 방법이다.
프로젝트에 적용중인 모듈에 적용하기 위해 여러 자료를 찾다 발견한 매우 간단한 방법이다.

지금까지 제가 배포한 모듈의 경우 모두 이 방법을 사용해 서비스에 등록했다.
방법은 다음과 같다.

JavaService.exe 에 구동 Argument로 설정값을 넘겨주면 서비스 등록이 완료되게 된다.

실제 사용은 아래의 방법을 따른다.

1. JavaService.exe를 구한다.
2. 서비스 등록용 batch파일을 만든다. 아래는 필자가 사용하는 파일의 예이다.

C:JavaService -install MyApp %JAVA_HOME%jre inserverjvm.dll -Djava.class.path=.;C:MyAppclasses -start MyApp.StartApp -params INSTALL_DIR=C:MyAppr -out C:MyApplogsstdout.log -err C:MyApplogsstderr.log -auto

Java Service가 사용하는 각 옵션 값은 다음과 같습니다.

      -install COM : 윈도우 서비스에 COM 란 이름으로 등록

 

      %JVM_PATH% : Java 서비스 등록을 위해 사용하는 dll. JDK나 JRE가 설치된 곳에 있음.
                               {JDK_HOME}/jre/bin/[server|client]/jvm.dll
                               {JRE_HOME}/bin/[server|client]/jvm.dll
 
       -Djava.class.path : 프로그램 실행을 위한 Java Classpath. 
       -Xms64M -Xmx128M : class path 이후에는 Java VM 옵션
       -start : main() 메소드가 있는 시작 클래스명 
       -out : 서비스 등록 후 출력하는 로그
       -err : 서비스 등록 후 출력하는 에러 로그
       -current : 프로그램의 실행 위치

       -description : 서비스에 등록될때 해당 서비스의 설명 내용



3. 서비스 해지용 batch파일을 만든다. 아래는 필자가 사용하는 파일의 예이다. 
         C:JavaService -uninstall MyApp

더 자새한 내용은 http://forge.ow2.org/projects/javaservice/ 을 참고하기 바란다.

저작자 표시
신고


Posted by injunech
2017.03.11 11:49


WindowBuilder Java GUI(AWT,SWT,Swing) Tool

Eclipse Plug-In 설치방법



<Tools> eclipse의 GUI(AWT/Swing)플러그인(window builder)

 

1. 먼저 이클립스 접속 http://www.eclipse.org/

2. 오늘쪽 상단 검색창에 window builder 검색!!!(사실 구글에서 검색해도 됨)


3. 사실 구글검색이다. 결과 첫번째것 클릭!!

 

4.https://www.eclipse.org/windowbuilder/ 이 사이트에서 Download 를 들어간다.
(다운로드 링크 주소 : https://www.eclipse.org/windowbuilder/download.php)


5. 위 사진의 중앙부분에 Update Sites의 link 부분에서 자기의 이클립스 버전에 맞는 link를 찾아 왼쪽 클릭이 아니라 오른쪽 클릭!!!(다운받는거 아님니다.) 그리고 속성!!!

(참고로 크롬에서는 속성이 없으니 왠만하면 익스플로어에서 접속하자)

 

6. 속성 창이 뜨면 주소(URL)을 드레그하고 ctrl + c 한다.

7. 그리고 이클립스를 실행하고 help - Install - New Software... 를 열면

8. 이런게 나온다.. 여기서 오른쪽에 Add...
 
9. 그럼 Add Repository가 나오는데 Name에 window builder(이름이야 뭐 아무렇게나..) 그리고 Location에 아까 ctrl + c 했던것을 붙여넣어 준다. 그리고 OK!!

 

10. 그럼 자동으로 설치할 파일을 웹이서 찾아주고 Name에 나타나 진다.

11. Select all 클릭 후 Next > 

 

12. 자동으로 다운로드 된다.(싱기방기...)

13. Install할 목록들이 Details하게 나온다..(Swing...SWT...)

Next > 

 

14. Licenses를 Review해라...(영어는 날 힘들게해...어차피 우리는 accept의 노예...I accept... 클릭)

Finish

 

15. 그럼 설치가 된다...


16. 껏다 키란다..Yes

17. 설치 끝.. 실행해 보자 New - other - WindowBuilder - JFram - Next> 하고 JFram을 만들어 보자

 

18. 아래쪽 Design을 클릭해 요런 화면이 나오면 성공!

 

이렇게 설정이 끝나면 Eclipse 툴로 java 디자인을 작업할수 있다.



출처 - http://blog.naver.com/ourbebop/30186910685



저작자 표시
신고


Posted by injunech
2017.02.28 15:16


자바 프로그램을 윈도우 서비스에 등록하는 방법입니다.
여러가지 방법이 있지만 가장 간단하고 편리한 Java Service를 사용하는 방법입니다.
 
  1. JavaService를 받는다.
 
  2. .bat 파일로 서비스 등록에 필요한 내용을 작성한다.
 
  3. 서비스 등록 .bat 파일 예


@set TARGET_APP=com.program.myprogram
@set JVM_PATH="C:\Program Files\Java\jre1.6.0_03\bin\client\jvm.dll"
@set MyProgram_BIN="C:\Program Files\MyProgram\bin"
@set OUT_LOG="C:\Program Files\MyProgram\log\stdout.log"
@set ERR_LOG="C:\Program Files\MyProgram\log\stderr.log"
 
@set CLASSPATH="C:\Program Files\MyProgram\lib\msbase.jar";%CLASSPATH%
@set CLASSPATH="C:\Program Files\MyProgram\lib\mssqlserver.jar";%CLASSPATH%
...
 
@JavaService.exe -install MyProgram %JVM_PATH% -Djava.class.path=%CLASSPATH% -Xms64M -Xmx128M -start %TARGET_APP% -out %OUT_LOG% -err %ERR_LOG% -current %MyProgram_BIN% -description "MyProgram Service"


각 변수는 다음과 같습니다.
     TARGET_APP : main() 이 포함된 클래스명입니다.

     JVM_PATH : 옵션에서 설명하겠지만 서비스 등록에 사용하는 jvm.dll 파일의 경로입니다.

     MyProgram_BIN : 서비스에 등록될 자바 프로그램의 실행 경로입니다.

     CLASSPATH : 자바 프로그램 실행에 필요한 클래스 파일들의 경로입니다.


 Java Service가 사용하는 각 옵션 값은 다음과 같습니다.
      -install MyProgram : 윈도우 서비스에 MyProgram 란 이름으로 등록
 
      %JVM_PATH% : Java 서비스 등록을 위해 사용하는 dll. JDK나 JRE가 설치된 곳에 있음.
                               {JDK_HOME}/jre/bin/[server|client]/jvm.dll
                               {JRE_HOME}/bin/[server|client]/jvm.dll
 
       -Djava.class.path : 프로그램 실행을 위한 Java Classpath.
      
       -Xms64M -Xmx128M : class path 이후에는 Java VM 옵션
 
       -start : main() 메소드가 있는 시작 클래스명
 
       -out : 서비스 등록 후 출력하는 로그
 
       -err : 서비스 등록 후 출력하는 에러 로그
 
       -current : 프로그램의 실행 위치
 
       -description : 서비스에 등록될때 해당 서비스의 설명 내용


위와 같은 .bat 파일을 만들어 실행을 하면 서비스로 등록이 됩니다.
등록된 서비스를 해제하기 위해서 아래와 같은 커맨드를 실행합니다.
.bat 파일로 만들어도 되고요.


JavaService.exe -uninstall MyProgram



저작자 표시
신고


Posted by injunech
2017.02.27 13:04


내장된 ArrayList의 사용법

생성

ArrayList를 사용하기 위해서는 우선 ArrayList 객체를 만들어야 합니다.

1
ArrayList<Integer> numbers = new ArrayList<Integer>();

ArrayList는 java.util.ArrayList에 포함되어 있기 때문에 import를 해주셔야 합니다.

1
import java.util.ArrayList;

추가

엘리먼트를 추가 할 때는 add 메소드를 사용합니다. add는 배열에 단순히 더해지는 것이기 때문에 빠르게 동작합니다.

1
2
3
4
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);

특정 위치에 추가하고 싶다면 메소드 add의 첫번째 인자로 인덱스를 지정합니다.

1
numbers.add(1, 50);

자바의 배열은 크기가 고정되어 있습니다. 데이터를 추가하는 과정에서 내부적으로 사용하는 배열이 꽉차면 기존의 배열 대비 크기가 2배 큰 새로운 배열을 만들고 기존의 데이터를 새로운 배열로 복제합니다. 덕분에 프로그래머는 ArrayList의 크기에 신경쓰지 않고 편리하게 프로그램을 만들 수 있습니다. 하지만 배열의 크기를 키우는 과정에서 많은 부하가 발생합니다. 이런 기능은 List 데이터 스트럭쳐의 본질적인 기능이라고 할 수는 없습니다. 따라서 우리 수업에서는 다루지 않습니다. 궁금하신 분은 Dynamic Array를 참고해주세요.

삭제

특정 인덱스에 위치하는 엘리먼트를 삭제할 때는 remove를 사용합니다.

1
numbers.remove(2);

가져오기

엘리먼트를 가져올 때는 get을 사용합니다. 이때 내부적으로 배열을 이용하기 때문에 매우 빠르게 엘리먼트를 가져올 수 있습니다.

1
numbers.get(2);

반복

자바에서는 ArrayList를 탐색하기 위한 방법으로 iterator을 제공합니다. 이것은 주로 객체지향 프로그래밍에서 사용하는 반복기법입니다. 우선 Iterator 객체를 만들어야 합니다.

1
Iterator it<Integer> = numbers.iterator();

Iterator 객체는 numbers 객체 내부에 저장된 값을 하나씩 순회하면서 탐색할 수 있도록 돕는 객체입니다.

1
2
3
while(it.hasNext()){
System.out.println(it.next());
}

it.next() 메소드를 호출할 때마다 엘리먼트를 순서대로 리턴합니다. 만약 더 이상 순회할 엘리먼트가 없다면 it.hasNext()의 값은 false가 되면서 while문이 종료 됩니다.

단순 출력을 위해서 순회를 하지는 않겠지요? 순회 과정에서 필요에 따라서는 엘리먼트를 삭제/추가하는 작업을 해야 할 것입니다. 그런 경우 아래와 같이 처리할 수 있습니다.

1
2
3
4
5
6
while(it.hasNext()){
int value = it.next();
if(value == 30){
it.remove();
}
}

it.remove()는 it.next()를 통해서 반환된 numbers의 엘리먼트를 삭제하는 명령입니다.

조금 더 편리한 방법도 있습니다.

1
2
3
for(int value : numbers){
System.out.println(value);
}


전체코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package list.arraylist.api;
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);
System.out.println("add(값)");
System.out.println(numbers);
numbers.add(1, 50);
System.out.println("\nadd(인덱스, 값)");
System.out.println(numbers);
numbers.remove(2);
System.out.println("\nremove(인덱스)");
System.out.println(numbers);
System.out.println("\nget(인덱스)");
System.out.println(numbers.get(2));
System.out.println("\nsize()");
System.out.println(numbers.size());
System.out.println("\nindexOf()");
System.out.println(numbers.indexOf(30));
Iterator it = numbers.iterator();
System.out.println("\niterator");
while (it.hasNext()) {
int value = (int) it.next();
if (value == 30) {
it.remove();
}
System.out.println(value);
}
System.out.println(numbers);
System.out.println("\nfor each");
for (int value : numbers) {
System.out.println(value);
}
System.out.println("\nfor");
for (int i = 0; i < numbers.size(); i++) {
System.out.println(numbers.get(i));
}
}
}



출처 : https://opentutorials.org/module/1335/8711



저작자 표시
신고


Posted by injunech
2016.11.14 16:25


Java 문자열 숫자 자료형 변환


1. 숫자를 문자열로 바꾸기

int i = 1234;

String s = String.valueOf(i);     문자열 "1234"로 변환

String s = Integer.toString(i);   문자열 "1234"로 변환

String s = ””+i;                문자열 "1234"로 변환

String s = “”+12.34;            문자열 "12.34"로 변환

String s = “”+0;                문자열 "0"로 변환


 

2. 문자열을 숫자로 바꾸기

String str = "1234";

int i = Integer.valueOf(str).intValue();

int i = Integer.parseInt(str);

long i = Long.parseLong(str)

double i = Double.valueOf(str).doubleValue();

Byte.parseByte(str)        바이트형 정수로 변환 

Short.parseShort(str)      short형 정수로 변환 

Integer.parseInteger(str)  int형 정수로 변환 

Long.parseLong(str)        long형 정수로 변환 

Float.parseFloat(str)      float형 부동 소수로 변환 

Double.parseDouble(str)    double형 부동 소수로


3. 진수 변환

문자 16진수 → 숫자 10진수

String strHexValue = "A";

System.out.println(Integer.parseInt(strHexValue, 16));

>> 10


숫자 10진수 → 문자 16진수

System.out.println(Integer.toString(intHexValue, 16));

>> a 


4. 대소문자 변환


소문자 → 대문자

String strSmallA = "a";

String strLargeA = strSmallA.toUpperCase();


대문자 → 소문자 

String strLargeA = "A";

String strSmallA = strLargeA.toLowerCase();


5. 문자 비교

"a".equals("A") → false

"a".equalsIgnoreCase("A") → ture


 


 

신고


Posted by injunech
2015.05.18 00:21


Java Code Examples for javax.bluetooth.DiscoveryAgent

The following code examples are extracted from open source projects. You can click  to vote up the examples you like. Your votes will be used in an intelligent system to get more and better code examples.

Code Example 1:

  9 
vote

From project lego-mindstorms-praktikum, under directory /src/basis/.

Source BTRaceStartClient.java

public void searchForDevices(){
  LocalDevice localDevice;
  DiscoveryAgent discoveryAgent;
  try {
    localDevice=LocalDevice.getLocalDevice();
    discoveryAgent=localDevice.getDiscoveryAgent();
    discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
  }
 catch (  BluetoothStateException ex) {
  }
}
 

Code Example 2:

  7 
vote

From project j2mepolish, under directory /enough-polish-j2me/source/src/de/enough/polish/bluetooth/.

Source DiscoveryHelper.java

/** 
 * Finds all nearby devices in the specified search mode
 * @param searchMode the search mode, either DiscoveryAgent.GIAC or DiscoveryAgent.LIAC. If in doubt use GIAC.
 * @param deviceClassMajor the major version of device classes that should be returned, -1 if all devices should be retrieved
 * @param deviceClassMinor the minor version of device classes that should be returned, -1 if all devices should be retrieved
 * @return an array of all found devices, can be empty but not null
 * @throws BluetoothStateException when there was an error during search
 */
private BluetoothDevice[] findDevicesImpl(int searchMode,int deviceClassMajor,int deviceClassMinor) throws BluetoothStateException {
  this.searchedClassMajor=deviceClassMajor;
  this.searchedClassMinor=deviceClassMinor;
  LocalDevice device=LocalDevice.getLocalDevice();
  if (device == null) {
    return new BluetoothDevice[0];
  }
  DiscoveryAgent discAgent=device.getDiscoveryAgent();
  device.setDiscoverable(searchMode);
synchronized (INSTANCE) {
    discAgent.startInquiry(searchMode,INSTANCE);
    try {
      INSTANCE.wait();
    }
 catch (    InterruptedException e) {
    }
  }
  BluetoothDevice[] devices=new BluetoothDevice[INSTANCE.discoveredDevices.size()];
  Arrays.cast(INSTANCE.discoveredDevices.getInternalArray(),devices);
  INSTANCE.discoveredDevices.clear();
  return devices;
}
 

Code Example 3:

  7 
vote

From project j2mepolish, under directory /enough-polish-j2me/source/src/de/enough/polish/bluetooth/.

Source DiscoveryHelper.java

/** 
 * Searches all nearby devices for a service with the specified UUID
 * @param ids the unique bluetooth identifiers of the service
 * @param attributes the attributes that should be queried, use null for not searching for any attributes
 * @param devices the devices that should be searched for the service
 * @return the first found service or null if none is found
 * @throws BluetoothStateException when the service search fails unexpectetly
 */
private ServiceRecord findServicesImpl(UUID[] ids,int[] attributes,Object[] devices) throws BluetoothStateException {
  LocalDevice localDevice=LocalDevice.getLocalDevice();
  if (localDevice == null) {
    return null;
  }
  DiscoveryAgent discAgent=localDevice.getDiscoveryAgent();
  for (int i=0; i < devices.length; i++) {
    Object obj=devices[i];
    RemoteDevice remoteDevice=(obj instanceof RemoteDevice ? (RemoteDevice)obj : ((BluetoothDevice)obj).getDevice());
    this.transctionId=discAgent.searchServices(attributes,ids,remoteDevice,this);
synchronized (this) {
      try {
        wait();
      }
 catch (      InterruptedException e) {
      }
    }
    if (this.discoveredServices.size() > 0) {
      break;
    }
  }
  if (this.discoveredServices.size() > 0) {
    ServiceRecord serviceRecord=(ServiceRecord)this.discoveredServices.get(0);
    this.discoveredServices.clear();
    return serviceRecord;
  }
  return null;
}
 

Code Example 4:

  7 
vote

From project j2mepolish, under directory /enough-polish-sample-nutiteq/nutiteq_maps_lib_src_1_1_0/src/com/nutiteq/bluetooth/.

Source BluetoothAPIDevice.java

private void findDevices(){
  try {
    btDevicesFound.removeAllElements();
    isBTSearchComplete=false;
    final LocalDevice local=LocalDevice.getLocalDevice();
    final DiscoveryAgent discoveryAgent=local.getDiscoveryAgent();
    discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
    while (!isBTSearchComplete) {
synchronized (this) {
        this.wait(BLUETOOTH_TIMEOUT);
      }
      if (!isBTSearchComplete) {
        discoveryAgent.cancelInquiry(this);
      }
    }
  }
 catch (  final Exception e) {
    Log.error("BT: find " + e.getMessage());
    Log.printStackTrace(e);
  }
}
 

Code Example 5:

  7 
vote

From project maps-lib-nutiteq, under directory /src/com/nutiteq/bluetooth/.

Source BluetoothAPIDevice.java

private void findDevices(){
  try {
    btDevicesFound.removeAllElements();
    isBTSearchComplete=false;
    final LocalDevice local=LocalDevice.getLocalDevice();
    final DiscoveryAgent discoveryAgent=local.getDiscoveryAgent();
    discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
    while (!isBTSearchComplete) {
synchronized (this) {
        this.wait(BLUETOOTH_TIMEOUT);
      }
      if (!isBTSearchComplete) {
        discoveryAgent.cancelInquiry(this);
      }
    }
  }
 catch (  final Exception e) {
    Log.error("BT: find " + e.getMessage());
    Log.printStackTrace(e);
  }
}
 

Code Example 6:

  5 
vote

From project colloqmote, under directory /Computer/ColloQmoteAccelerometerPC/src/.

Source Bluetooth.java

private DiscoveryAgent getAgent(){
  try {
    return LocalDevice.getLocalDevice().getDiscoveryAgent();
  }
 catch (  BluetoothStateException e) {
    log(e);
    log("ERROR detected and all operations stopped.");
    throw new Error("No discovery agent available.");
  }
}
 

Code Example 7:

  5 
vote

From project colloqmote, under directory /Computer/ColloQmoteKeypadPC/src/.

Source Bluetooth.java

private DiscoveryAgent getAgent(){
  try {
    return LocalDevice.getLocalDevice().getDiscoveryAgent();
  }
 catch (  BluetoothStateException e) {
    log(e);
    log("ERROR detected and all operations stopped.");
    throw new Error("No discovery agent available.");
  }
}
 

Code Example 8:

  5 
vote

From project colloqmote, under directory /Mobile/ColloqmoteAccelerometer/build/preprocessed/.

Source Bluetooth.java

protected void startApp() throws MIDletStateChangeException {
  display=Display.getDisplay(this);
  display.setCurrent(infoArea);
  infoArea.deleteAll();
  try {
    LocalDevice device=LocalDevice.getLocalDevice();
    device.setDiscoverable(DiscoveryAgent.GIAC);
    String url="btspp://localhost:" + UUID + ";name=DeviceServerCOMM";
    log("Create server by uri: " + url);
    StreamConnectionNotifier notifier=(StreamConnectionNotifier)Connector.open(url);
    serverLoop(notifier);
  }
 catch (  Throwable e) {
    log(e);
  }
}
 

Code Example 9:

  5 
vote

From project colloqmote, under directory /Mobile/ColloqmoteAccelerometer/src/.

Source Bluetooth.java

protected void startApp() throws MIDletStateChangeException {
  display=Display.getDisplay(this);
  display.setCurrent(infoArea);
  infoArea.deleteAll();
  try {
    LocalDevice device=LocalDevice.getLocalDevice();
    device.setDiscoverable(DiscoveryAgent.GIAC);
    String url="btspp://localhost:" + UUID + ";name=DeviceServerCOMM";
    log("Create server by uri: " + url);
    StreamConnectionNotifier notifier=(StreamConnectionNotifier)Connector.open(url);
    serverLoop(notifier);
  }
 catch (  Throwable e) {
    log(e);
  }
}
 

Code Example 10:

  5 
vote

From project colloqmote, under directory /Mobile/ColloQmoteKeypad/build/preprocessed/.

Source Bluetooth.java

void initSensor(){
  infoArea.deleteAll();
  display.setCurrent(infoArea);
  try {
    LocalDevice device=LocalDevice.getLocalDevice();
    device.setDiscoverable(DiscoveryAgent.GIAC);
    String url="btspp://localhost:" + UUID + ";name=DeviceServerCOMM";
    log("Create server by uri: " + url);
    StreamConnectionNotifier notifier=(StreamConnectionNotifier)Connector.open(url);
    serverLoop(notifier);
  }
 catch (  Throwable e) {
    log(e);
  }
}
 

Code Example 11:

  5 
vote

From project colloqmote, under directory /Mobile/ColloQmoteKeypad/src/.

Source Bluetooth.java

void initSensor(){
  infoArea.deleteAll();
  display.setCurrent(infoArea);
  try {
    LocalDevice device=LocalDevice.getLocalDevice();
    device.setDiscoverable(DiscoveryAgent.GIAC);
    String url="btspp://localhost:" + UUID + ";name=DeviceServerCOMM";
    log("Create server by uri: " + url);
    StreamConnectionNotifier notifier=(StreamConnectionNotifier)Connector.open(url);
    serverLoop(notifier);
  }
 catch (  Throwable e) {
    log(e);
  }
}
 

Code Example 12:

  5 
vote

From project Eclipse, under directory/com.mobilesorcery.sdk.ui.targetphone/src/com/mobilesorcery/sdk/ui/targetphone/internal/bt/.

Source BluetoothDialog.java

public void discoverDevices(){
  clearDevices();
  updateUI();
  LocalDevice dongle=null;
  try {
    dongle=LocalDevice.getLocalDevice();
    agent=dongle.getDiscoveryAgent();
    agent.startInquiry(DiscoveryAgent.GIAC,this);
  }
 catch (  BluetoothStateException e) {
    setRefreshInProgress(false);
    Policy.getStatusHandler().show(new Status(IStatus.ERROR,TargetPhonePlugin.PLUGIN_ID,e.getMessage()),"Could not scan for devices");
  }
}
 

Code Example 13:

  5 
vote

From project emergency-service-drools-app, under directory /emergency-service-sensor/src/main/java/com/wordpress/salaboy/sensor/wii/.

Source MyMoteFinder.java

public void startDiscovery(){
  try {
    discoveryAgent.startInquiry(DiscoveryAgent.LIAC,listener);
  }
 catch (  BluetoothStateException ex) {
    throw new RuntimeException(ex);
  }
}
 

Code Example 14:

  5 
vote

From project Gome, under directory /sources/com/indigonauts/gome/multiplayer/bt/.

Source Discoverer.java

public Vector findOtherGome(){
  RemoteDevice[] devList=null;
  try {
    agent.startInquiry(DiscoveryAgent.GIAC,this);
synchronized (this) {
      try {
        this.wait();
      }
 catch (      Exception e) {
      }
    }
  }
 catch (  BluetoothStateException e) {
    System.out.println("Unable to find devices to search");
  }
  if (deviceList.size() > 0) {
    devList=new RemoteDevice[deviceList.size()];
    deviceList.copyInto(devList);
    System.out.println("calling ss");
    searchServices(devList);
    return serviceList;
  }
  log.info("No Devices found.");
  log.info("No Services found.");
  return serviceList;
}
 

Code Example 15:

  5 
vote

From project j2mepolish, under directory /enough-polish-build/source/src/de/enough/polish/rmi/bluetooth/.

Source L2CapServer.java

/** 
 * Generates the URL that fits for the given UUID
 * @param uuid the UUID
 * @return the local connection URL for establishing an L2CAP based service
 * @throws BluetoothStateException when the URL could not be generated
 */
public static String generateLocalUrl(String uuid) throws BluetoothStateException {
  LocalDevice device=LocalDevice.getLocalDevice();
  device.setDiscoverable(DiscoveryAgent.GIAC);
  String url="btl2cap://localhost:" + uuid;
  String max=LocalDevice.getProperty("bluetooth.l2cap.receiveMTU.max");
  if (max != null) {
    if (max.equals("0")) {
      max="762";
    }
    url+=";ReceiveMTU=" + max + ";TransmitMTU="+ max;
  }
  return url;
}
 

Code Example 16:

  5 
vote

From project Remote-Bluetooth-Android, under directory/RemoteBluetoothServer/src/com/luugiathuy/apps/remotebluetooth/.

Source WaitThread.java

/** 
 * Waiting for connection from devices 
 */
private void waitForConnection(){
  LocalDevice local=null;
  StreamConnectionNotifier notifier;
  StreamConnection connection=null;
  try {
    local=LocalDevice.getLocalDevice();
    local.setDiscoverable(DiscoveryAgent.GIAC);
    UUID uuid=new UUID("04c6093b00001000800000805f9b34fb",false);
    System.out.println(uuid.toString());
    String url="btspp://localhost:" + uuid.toString() + ";name=RemoteBluetooth";
    notifier=(StreamConnectionNotifier)Connector.open(url);
  }
 catch (  BluetoothStateException e) {
    System.out.println("Bluetooth is not turned on.");
    e.printStackTrace();
    return;
  }
catch (  IOException e) {
    e.printStackTrace();
    return;
  }
  while (true) {
    try {
      System.out.println("waiting for connection...");
      connection=notifier.acceptAndOpen();
      Thread processThread=new Thread(new ProcessConnectionThread(connection));
      processThread.start();
    }
 catch (    Exception e) {
      e.printStackTrace();
      return;
    }
  }
}
 

Code Example 17:

  5 
vote

From project Sphero-Desktop-API, under directory /bluecove/com/intel/bluetooth/.

Source BluetoothStackBlueSoleil.java

/** 
 * There are no functions to find BlueSoleil discoverable status.
 */
public int getLocalDeviceDiscoverable(){
  if (isBluetoothReady(2)) {
    return DiscoveryAgent.GIAC;
  }
 else {
    return DiscoveryAgent.NOT_DISCOVERABLE;
  }
}
 

Code Example 18:

  5 
vote

From project Sphero-Desktop-API, under directory /bluecove/com/intel/bluetooth/.

Source BluetoothStackMicrosoft.java

public boolean setLocalDeviceDiscoverable(int mode) throws BluetoothStateException {
switch (mode) {
case DiscoveryAgent.NOT_DISCOVERABLE:
    cancelLimitedDiscoverableTimer();
  DebugLog.debug("setDiscoverable(false)");
setDiscoverable(false);
return (DiscoveryAgent.NOT_DISCOVERABLE == getLocalDeviceDiscoverable());
case DiscoveryAgent.GIAC:
cancelLimitedDiscoverableTimer();
DebugLog.debug("setDiscoverable(true)");
setDiscoverable(true);
return (DiscoveryAgent.GIAC == getLocalDeviceDiscoverable());
case DiscoveryAgent.LIAC:
cancelLimitedDiscoverableTimer();
DebugLog.debug("setDiscoverable(LIAC)");
setDiscoverable(true);
if (!(DiscoveryAgent.GIAC == getLocalDeviceDiscoverable())) {
return false;
}
limitedDiscoverableTimer=Utils.schedule(60 * 1000,new Runnable(){
public void run(){
try {
setDiscoverable(false);
}
 catch (BluetoothStateException e) {
DebugLog.debug("error setDiscoverable",e);
}
 finally {
limitedDiscoverableTimer=null;
}
}
}
);
return true;
}
return false;
}
 

Code Example 19:

  5 
vote

From project Sphero-Desktop-API, under directory /bluecove/com/intel/bluetooth/.

Source BluetoothStackMicrosoft.java

public int getLocalDeviceDiscoverable(){
  int mode=getBluetoothRadioMode();
  if (mode == BTH_MODE_DISCOVERABLE) {
    if (limitedDiscoverableTimer != null) {
      DebugLog.debug("Discoverable = LIAC");
      return DiscoveryAgent.LIAC;
    }
 else {
      DebugLog.debug("Discoverable = GIAC");
      return DiscoveryAgent.GIAC;
    }
  }
 else {
    DebugLog.debug("Discoverable = NOT_DISCOVERABLE");
    return DiscoveryAgent.NOT_DISCOVERABLE;
  }
}
 

Code Example 20:

  5 
vote

From project Sphero-Desktop-API, under directory /bluecove/com/intel/bluetooth/.

Source BluetoothStackOSX.java

public int getLocalDeviceDiscoverable(){
  if (getLocalDeviceDiscoverableImpl()) {
    return DiscoveryAgent.GIAC;
  }
 else {
    return DiscoveryAgent.NOT_DISCOVERABLE;
  }
}
 


신고

'Programming > JAVA' 카테고리의 다른 글

[JAVA] ArrayList - Java API  (0) 2017.02.27
Java 문자열 숫자 자료형 변환  (0) 2016.11.14
[Java] Bluetooth Examples for javax.bluetooth.DiscoveryAgent  (0) 2015.05.18
JNA (Java Native Access)  (0) 2015.03.14
[JAVA] 자바 실행파일 만들기  (0) 2015.03.01
JGoodies JAVA Swing API  (0) 2015.02.07


Posted by injunech
2015.03.14 20:15


JNA는 기존 JNI(Java Native Interface)의 복잡한 구현 방식을 단축하고자 나온 OpenSource Library이다.

https://github.com/twall/jna

JNA를 이용하면 JNI의 native library와의 연결을 위한 javah header파일 생성, native source 파일 생성, 컴파일 등의 과정이 불필요하며, 이미 만들어진 native library의 재사용이 가능하게 된다. 말 그대로 native access임..ㅎ

예 1) JNI 개발 과정

1) Native Method 선언된 Java Class 코딩
2) Java Class 컴파일
3) javah를 통한 C Header파일 생성
4) C 소스 코딩
5) C 소스 컴파일
6) Execute Java Class


예 2) JNA 개발 과정

1) Native Method 선언된 Java Class 코딩
2) Java Class 컴파일
3) Execute Java Class


참고로 최근에 많은 OpenSource들이 JNA를 이용하여 성능을 향상시키는 방식를 적용하고 있으며, 무엇보다도 지저분한 h,c 파일들이 프로젝트 내에서 사라지게 되어 매우 깔끔해지고 관리도 수월하다. ;)

다음은 JNA를 통해 test.so의 foo라는 함수를 호출하는 간단한 예제를 만들어 보았다.


1. TestLibrary Interface

import com.sun.jna.Library;
import com.sun.jna.Native;

/**
 * Test Library Interface
 *
 * @Author Xenomity™ a.k.a P-slinc' (이승한)
 */
public interface TestLibrary extends Library {
    TestLibrary LIBRARY = (TestLibrary) Native.loadLibrary(("test.so"), TestLibrary.class);

    /**
     * foo method
     */
    void foo();  // native method
}


2. Test Result

TestLibrary.LIBRARY.foo();

...

[RESULT] foo function executed~~!.


신고

'Programming > JAVA' 카테고리의 다른 글

Java 문자열 숫자 자료형 변환  (0) 2016.11.14
[Java] Bluetooth Examples for javax.bluetooth.DiscoveryAgent  (0) 2015.05.18
JNA (Java Native Access)  (0) 2015.03.14
[JAVA] 자바 실행파일 만들기  (0) 2015.03.01
JGoodies JAVA Swing API  (0) 2015.02.07
클래스 java.io.File  (0) 2013.05.29


Posted by injunech
2015.03.01 15:27


JAVA 로 생성한 코드를 실행프로그램으로 생성하는 방법입니다.


1. Java 코드를 Jar 파일로 추출하기

JAVA 코드 작성한 개발 툴에서 export ( 내보내기 ) 클릭하여 Java > Runnable JAR file 선택합니다.

만들고자 하는 프로젝트를 선택 후 저장될 경로를 입력하여 Jar 파일을 추출합니다.








2. 위에서 추출한 Jar 파일을 실행파일로 만들어줄 JSmooth 다운받고 설치

http://sourceforge.net/projects/jsmooth/files/



3. JSmooth 파일을 실행시키고 다음과 같이 하나씩 설정하여 실행파일을 생성한다.


 1) Skeleton 에서 원하는 속성을 선택한다.

만들고자 하는 실행파일이 콘솔출력이면 Console Wrapper 를 선택하고

스윙, AWT를 이용한 출력이면 Windowed 를 선택하고 기타 원하는 목적에 맞게 선택.

 - Single instance 선택시에 중복실행 안되고 한번의 실행만 되도록 설정한다.








 2) Executable Binary 엔 파일이 저장 될 경로와 파일 이름을 적어주고 Executable Icon엔 파일의 아이콘이 될 사진파일을 추가한다.

Executable Binary 에 파일명을 적을경우 .exe 확장명을 꼭 붙여준다. (생성이후에 .exe 확장명을 붙여도 상관없긴합니다.)








 3) Embedded jar 에서 실행파일을 만들고자 하는 Jar 파일을 불러온뒤 Main Class 에서 Main 으로 실행될 클래스를 선택한다.

Application Arguments 는 Main 실행시 선택될 매게 변수










 4) Java 의 Minimum 버전을 입력해준다.







4. 위 3번 과정을 모두 마친 후에 Project > Compile 을 선택하여 실행파일을 생성한다.

3.2 에서 선택한 경로로 실행파일이 생성된다.
















신고

'Programming > JAVA' 카테고리의 다른 글

[Java] Bluetooth Examples for javax.bluetooth.DiscoveryAgent  (0) 2015.05.18
JNA (Java Native Access)  (0) 2015.03.14
[JAVA] 자바 실행파일 만들기  (0) 2015.03.01
JGoodies JAVA Swing API  (0) 2015.02.07
클래스 java.io.File  (0) 2013.05.29
평년/윤년 구하기  (0) 2013.03.02


Posted by injunech
2015.02.07 20:43


1.Introduction                                                                                                              

 

 

많이들 보신 화면입니다. 그런데, 이것은 자바로 만들어졌습니다.

기존의 스윙 Look & Feel 을 아시던 분이라면 아마도 놀라실듯 합니다.

 

JGoodies 는 제품개발, 소프트웨어 컨설팅 그리고 디자인 회사입니다.

http://www.jgoodies.com/

 

자바 데스크탑 애플리케이션을 제작중이시거나 공부하시는 분들은 아마  

http://java.sun.com/products/jfc/tsc/sightings/index.html 에서 많은

자바 애플리케이션들을 보셨을겁니다.

이중에서 UI 가 좀 이쁘다 싶으면 거의 모두 JGoodies 를 쓴거라고 보셔도 무방합니다.

 

JGoodies 에서 내놓은  Free Libraries 는 전세계 자바 유저들에게

엄청난 인지도를 가진  "Advanced Java Look & Feel API"  입니다.

http://www.jgoodies.com/freeware/index.html

 

이 라이브러리는 모두 BSD 라이센스 입니다.

이것은 GNU 라이센스인 GPL 보다 더 자유로운 라이센스로 , 쉽게 말하자면

공개된 소스가지고 지지고 볶든 , 뭐 다른걸 만들던 상관하지 않는다 라는 겁니다.

더 쉽게 말하면.  진짜 완전 꽁짜라는 소립니다. ㅡ.ㅡ;

 

2. JGoodies Free Libraries                                                                     

 

공개된 라이브러리는 다음과 같습니다.

JGoodies Animation

-> Time-based real-time animations in Java

http://www.jgoodies.com/freeware/animation/index.html


JGoodies Forms

-> Build better screens faster
http://www.jgoodies.com/freeware/forms/index.html

 

JGoodies Looks

 -> Free high-fidelity Windows and multi-platform appearance
http://www.jgoodies.com/freeware/looks/index.html

 

자바 데스크탑 애플리케이션을 만들때 아주 유용하게 쓰이는 것들입니다.

프로젝트에 JGoodies 를 적용할것이냐 말것이냐하는 판단은 개발자 각자의 몫이지만,

이것을 사용함으로서 얻는 이점은 이루 말 할수 없습니다.

 

3. JGoodies Looks                                                                                 

 

다운받아 보겠습니다.

먼저 라이브러리를 다운받기 위해

http://www.jgoodies.com/downloads/libraries.html 로 가서

JGoodies Looks 을 다운받습니다.

 

샘플 데모프로그램도 하나 다운 받아 봅시다.

http://www.jgoodies.com/downloads/index.html 로 가서

Looks Demo 를 다운 받습니다.

 

적당한 폴더에 풀고 데모를 실행시켜 보겠습니다.

>> java -jar looksdemo-1.2.2.jar

 

여기서 Look & Feel 과 Theme 를 선택하고 Launch Demo 를 누르면,

 

그냥 GUI 일 뿐이며, 액션은 없습니다. 이 윈도우를 종료하면 다시 Luncher 화면으로 돌아갑니다.


4. How to Use Look anf Feel                                                                     

 

Java Swing 을 사용한 GUI 프로그램을 제작할때 ,

우리는 스윙의 look&feel 을 변경하고 싶을때..다음과 같이 합니다.

 

.

.

.

 String macLAF       =  "com.sun.java.swing.plaf.mac.MacLookAndFeel";
 String metalLAF      =  "javax.swing.plaf.metal.MetalLookAndFeel";
 String motifLAF       =  "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
 String windowsLAF = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
 String GTKLAF        =  "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";

 String lafName= windowsLAF ;//-> 원하는 룩앤필 이름을 지정합니다.
  try {
   UIManager.setLookAndFeel(lafName);
  } catch (UnsupportedLookAndFeelException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  }

.

.

 

 















 마찬가지 방법으로 JGoodies Look & Feel 을 적용한다면,

 

.

.

 String exWinLAF ="com.jgoodies.plaf.windows.ExtWindowsLookAndFeel";
 String plasticLAF ="com.jgoodies.plaf.plastic.PlasticLookAndFeel";
 String plastic3DLAF ="com.jgoodies.plaf.plastic.Plastic3DLookAndFeel"; 
 String plasticXPLAF ="com.jgoodies.plaf.plastic.PlasticXPLookAndFeel"; 

 String lafName= exWinLAF ;//-> 원하는 룩앤필 이름을 지정합니다.
  try {
   UIManager.setLookAndFeel(lafName);
  } catch (UnsupportedLookAndFeelException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  }

 













여러분이 만들어논 데스크탑 애플리케이션이 있다면,

JGoodies Looks jar 파일을 클래스 패싱하시고

위 코드를 main 에 추가해 보시면 아마 더 예쁜 GUI 가 보여질것입니다.

 

4. How to Use Theme                                                                              

 

JGoodies 가 제공하는 Plastic 시리즈 룩앤필에는 원하는 테마를 설정할수 있습니다.

제공하고 있는 테마는 JGoodies API 를 참조합니다.

다음과 같이 Plastic 룩앤필에 테마를 설정합니다.

 

.

PlasticLookAndFeel.setMyCurrentTheme(new DesertBlue());
   try {
      UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
   } catch (Exception e) {}
 .

.

 




JGoodies 의 FAQ 에도 나와 있지만  

Plastic 룩앤필은 중국어 일본어 및 기타 언어를 지원하지 않습니다.

따라서 한국어를 지원하기 위해 약간의 꼼수가 필요합니다.

 

이 꼼수는 바로 Theme 를 이용하는 것인데,

PlasticTheme 클래스의 getFont0() 메소드를 오버라이드하여

내가 원하는 한글 폰트를 지정하는 것입니다.

 

.

  PlasticLookAndFeel.setMyCurrentTheme(new DesertBlue(){
   protected Font getFont0(int size) {
    return new Font("굴림", Font.PLAIN, 12);
   }
  });

 

  try {
      UIManager.setLookAndFeel(new Plastic3DLookAndFeel());
   } catch (Exception e) {}
.

 









5. 마치며...                                                                                            

 

Plastic 룩앤필은 특정한 몇몇개의 자바 컴퍼넌트의 UI 에 옵션을 설정할수 있습니다.

이것은 User's Guide 에 자세히 나와 있으므로 쉽게 참조 할수 있습니다.


JGoodies API는 아주 훌륭한 자바 룩앤필 이며

멋진 GUI 를 원하는 자바 데스크탑개발자라면 한번쯤 눈여겨 볼만한 API 입니다





신고

'Programming > JAVA' 카테고리의 다른 글

JNA (Java Native Access)  (0) 2015.03.14
[JAVA] 자바 실행파일 만들기  (0) 2015.03.01
JGoodies JAVA Swing API  (0) 2015.02.07
클래스 java.io.File  (0) 2013.05.29
평년/윤년 구하기  (0) 2013.03.02
날짜  (0) 2013.03.02


Posted by injunech
2013.05.29 02:17


클래스 java.io.File

java.lang.Object
   |
   +----java.io.File

public class File
extends Object
implements Serializable

이 클래스의 인스턴스는 호스트 파일 시스템의 파일명 또는 디렉토리를 나타냅니다. 파일은 경로명으로 지정되며, 경로명은 절대 경로명 또는 현재 작업 디렉토리에 상대적인 경로명일 수 있습니다. 경로명은 호스트 플랫폼의 명명 규칙을 따라야 합니다.

File 클래스는 기계와 무관한 방식의 파일 및 경로명에 대한 대부분의 기계 종속적인 복잡성을 처리하는 추상 개념을 제공합니다.

파일명 또는 경로가 사용될 때마다, 호스트의 파일 명명 규칙이 사용된다고 가정합니다.


변수 색인

pathSeparator
시스템 종속 경로 분리자 문자열
pathSeparatorChar
시스템 종속 경로 분리자
separator
시스템 종속 경로 분리자
separatorChar
시스템 종속 경로 분리자 문자열

생성자 색인

File(File, String)
지정된 디렉토리에 지정된 이름으로 파일을 나타내는 File 인스턴스를 작성합니다.
File(String)
파일명이 주어진 경로 인수인 파일을 나타내는 File 인스턴스를 작성합니다.
File(String, String)
경로명이 지정된 디렉토리, 분리자 및 name 인수로 구성된 File 인스턴스를 작성합니다.

메소드 색인

canRead()
응용프로그램이 지정된 파일에서 읽을 수 있는지 여부를 테스트합니다.
canWrite()
응용프로그램이 파일에 기록할 수 있는지 여부를 테스트합니다.
delete()
객체가 지정하는 파일을 삭제합니다.
equals(Object)
객체를 지정된 객체와 비교합니다.
exists()
File이 있는지 여부를 테스트합니다.
getAbsolutePath()
객체가 나타내는 파일의 절대 경로명을 리턴합니다.
getCanonicalPath()
File 객체의 경로명에 대한 표준 양식을 리턴합니다.
getName()
객체가 나타내는 파일의 이름을 리턴합니다.
getParent()
File 객체 경로명의 상위 파트를 리턴하거나, 이름에 상위 파트가 없는 경우 null을 리턴합니다.
getPath()
객체가 나타내는 파일의 경로명을 리턴합니다.
hashCode()
파일에 대한 해시 코드를 계산합니다.
isAbsolute()
File 객체가 나타내는 파일이 절대 경로명인지 여부를 테스트합니다.
isDirectory()
File 객체가 나타내는 파일이 디렉토리인지 여부를 테스트합니다.
isFile()
File 객체가 나타내는 파일이 "보통" 파일인지 여부를 테스트합니다.
lastModified()
File 객체가 나타내는 파일이 마지막으로 수정된 시간을 리턴합니다.
length()
File 객체가 나타내는 파일의 길이를 리턴합니다.
list()
File 객체가 지정하는 디렉토리 내의 파일의 목록을 리턴합니다.
list(FilenameFilter)
지정된 필터를 만족시키는 File이 지정하는 디렉토리 내의 파일의 목록을 리턴합니다.
mkdir()
File 객체가 경로명을 지정하는 디렉토리를 작성합니다.
mkdirs()
필요한 상위 디렉토리를 포함하여 File 객체가 경로명을 지정하는 디렉토리를 작성합니다.
renameTo(File)
File 인수가 제공하는 경로명을 갖도록 File 객체가 지정한 파일을 다른 이름으로 변경합니다.
toString()
객체의 문자열 표현을 리턴합니다.

변수

separator
 public static final String separator
시스템 종속 경로 분리자. 이 필드는 시스템 특성 file.separator의 값을 포함하도록 초기화됩니다.

참조:
getProperty
separatorChar
 public static final char separatorChar
시스템 종속 경로 분리자 문자열. 이 필드는 시스템 특성 file.separator값의 첫번째 문자를 포함하도록 초기화됩니다. 이 문자는 디렉토리와 파일명의 파일 컴포넌트를 분리합니다.

참조:
getProperty
pathSeparator
 public static final String pathSeparator
시스템 종속 경로 분리자 문자열. 이 필드는 시스템 특성 file.separator값을 포함하도록 초기화됩니다.

참조:
getProperty
pathSeparatorChar
 public static final char pathSeparatorChar
시스템 종속 경로 분리자. 이 필드는 시스템 특성 file.separator값의 첫번째 문자를 포함하도록 초기화됩니다. 이 문자는 자주 "경로 목록"으로 제공되는 파일 순서에서 파일명을 분리하는 데 사용됩니다.

참조:
getProperty

생성자

File
 public File(String path)
파일명이 주어진 경로 인수인 파일을 나타내는 File 인스턴스를 작성합니다.

매개변수:
path - 파일 경로명
오류: NullPointerException
파일 경로가 null인 경우
참조:
getPath
File
 public File(String path,
             String name)
경로명이 지정된 디렉토리, 분리자 및 name 인수로 구성된 File 인스턴스를 작성합니다.

매개변수:
path - 디렉토리 경로명
name - 파일 경로명
참조:
getPathseparator
File
 public File(File dir,
             String name)
지정된 디렉토리에 지정된 이름으로 파일을 나타내는 File 인스턴스를 작성합니다.

디렉토리 인수가 null인 경우, 결과 File 인스턴스는 경로명이 name 인수인 (시스템 종속) 현재 디렉토리 내의 파일을 나타냅니다. 그렇지 않으면 File 인스턴스는 경로명이 디렉토리의 경로명, 분리자, name 인수인 파일을 나타냅니다.

매개변수:
dir - 디렉토리
name - 파일 경로명
참조:
getPathseparator

메소드

getName
 public String getName()
객체가 나타내는 파일의 이름을 리턴합니다. 이 이름은 마지막 분리자 발생 후의 경로명입니다.

결과:
File 객체로 표현되는 파일의 이름(디렉토리 컴포넌트 없음)
참조:
getPathseparator
getPath
 public String getPath()
객체가 나타내는 파일의 경로명을 리턴합니다.

결과:
File 객체가 나타내는 경로명
getAbsolutePath
 public String getAbsolutePath()
객체가 나타내는 파일의 절대 경로명을 리턴합니다. 이 객체가 절대 경로명을 나타내는 경우, 절대 경로명을 리턴합니다. 그렇지 않으면 현재 사용자 디렉토리, 분리자 및 파일 객체의 경로명을 결합한 경로명을 리턴합니다.

시스템 특성 user.dir에는 현재 사용자 디렉토리가 포함됩니다.

결과:
File에 대한 시스템 종속 절대 경로명
참조:
getPathisAbsolutegetProperty
getCanonicalPath
 public String getCanonicalPath() throws IOException
File 객체의 경로명에 대한 표준 양식을 리턴합니다. 표준 양식의 정확한 정의는 시스템 종속적이나, 보통 현재 사용자 디렉토리에 대한 모든 상대적 참조가 완전하게 분석되는 절대 경로명을 지정합니다. 없는 파일 경로명의 표준 양식은 정의할 수 없는 경우도 있습니다.

오류: IOException
표준 경로의 구성시 파일 시스템 조회가 필요할 수 있기 때문에 I/O 오류가 발생하는 경우
getParent
 public String getParent()
File 객체 경로명의 상위 파트를 리턴하거나, 이름에 상위 파트가 없는 경우 null을 리턴합니다. 상위 파트는 일반적으로 정확한 정의가 시스템 종속적인 경우에도 분리자의 최종 발생을 가져오는 모든 것입니다. UNIX의 경우, 예를 들어 "/usr/lib"의 상위 파트는 "/usr"이고, 해당 상위 파트는 상위가 없는"/"입니다. Windows 플랫폼의 경우, "c:\java"의 상위 파트는 상위가 없는 "c:\"입니다.

참조:
getPathgetCanonicalPathseparator
exists
 public boolean exists()
File이 있는지 여부를 테스트합니다.

결과:
객체가 지정하는 파일이 있는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
canWrite
 public boolean canWrite()
응용프로그램이 파일에 기록할 수 있는지 여부를 테스트합니다.

결과:
응용프로그램이 객체에 의해 이름이 지정된 파일에 기록할 수 있는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 쓰기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkWrite 메소드가 호출됨
참조:
getPathcheckWrite
canRead
 public boolean canRead()
응용프로그램이 지정된 파일에서 읽을 수 있는지 여부를 테스트합니다.

결과:
객체가 지정하는 파일이 있고 응용프로그램이 파일을 읽을 수 있는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
isFile
 public boolean isFile()
File 객체가 나타내는 파일이 "보통" 파일인지 여부를 테스트합니다.

파일은 디렉토리가 아니고 다른 시스템 종속 기준을 만족시키는 경우 "보통" 파일입니다. Java 응용프로그램이 작성한 디렉토리가 아닌 파일은 보통 파일입니다.

결과:
객체가 지정하는 파일이 있고 파일이 "보통" 파일인 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
isDirectory
 public boolean isDirectory()
File 객체가 나타내는 파일이 디렉토리인지 여부를 테스트합니다.

결과:
File이 있고 디렉토리인 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
isAbsolute
 public native boolean isAbsolute()
File 객체가 나타내는 파일이 절대 경로명인지 여부를 테스트합니다. 절대 경로명의 정의는 시스템 종속적입니다. 예를 들어, UNIX에서 첫번째 문자가 분리자인 경우 절대 경로명입니다. Windows 플랫폼에서는 첫번째 문자가 ASCII '\' 또는 '/'이거나 콜론이 뒤에 오는 문자로 시작되는 경우 절대 경로명입니다.

결과:
File 객체가 나타내는 경로명이 절대 경로명인 경우 true, 그렇지 않으면 false
참조:
getPathseparator
lastModified
 public long lastModified()
File 객체가 나타내는 파일이 마지막으로 수정된 시간을 리턴합니다.

리턴값은 시스템 종속적이며 최종 수정으로 리턴된 다른 값과 비교하는 데에만 사용되어야 합니다. 절대 시간으로 해석되어서는 안 됩니다.

결과:
객체가 지정한 파일이 최종 수정된 시간, 또는 지정된 파일이 없는 경우 0L
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
length
 public long length()
File 객체가 나타내는 파일의 길이를 리턴합니다.

결과:
객체가 지정한 파일의 길이(바이트 단위), 또는 지정된 파일이 없는 경우 0L
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
mkdir
 public boolean mkdir()
File 객체가 경로명을 지정하는 디렉토리를 작성합니다.

결과:
디렉토리를 작성할 수 있는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 쓰기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkWrite 메소드가 호출됨
참조:
getPathcheckWrite
renameTo
 public boolean renameTo(File dest)
File 인수가 제공하는 경로명을 갖도록 File 객체가 지정한 파일을 다른 이름으로 변경합니다.

매개변수:
dest - 새로운 파일명
결과:
다른 이름으로 변경한 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, checkWrite 메소드를 파일 객체의 경로명과 목적지 목표 객체의 경로명으로 호출하여 응용프로그램이 두 파일 모두에 기록할 수 있는지를 알아봄
참조:
getPathcheckWrite
mkdirs
 public boolean mkdirs()
필요한 상위 디렉토리를 포함하여 File 객체가 경로명을 지정하는 디렉토리를 작성합니다.

결과:
디렉토리(들)를 작성할 수 있는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 디렉토리를 작성하기 전에 작성될 디렉토리 각각의 경로명으로 checkWrite 메소드가 호출됨
참조:
getPathcheckWrite
list
 public String[] list()
File 객체가 지정하는 디렉토리 내의 파일의 목록을 리턴합니다.

결과:
지정된 디렉토리 내의 파일명 배열. 이 목록에는 현재 디렉토리 또는 상위 디렉토리(Unix 시스템에서 "." 및 "..")가 포함되지 않습니다.
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathcheckRead
list
 public String[] list(FilenameFilter filter)
지정된 필터를 만족시키는 File이 지정하는 디렉토리 내의 파일의 목록을 리턴합니다.

매개변수:
filter - 필터 파일명
결과:
지정된 디렉토리 내의 파일명 배열. 이 목록에는 현재 디렉토리 또는 상위 디렉토리(Unix 시스템에서 "." 및 "..")가 포함되지 않습니다.
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일에 읽기 액세스할 수 있는지를 보기 위해 File의 경로명으로 checkRead 메소드가 호출됨
참조:
getPathFilenameFiltercheckRead
delete
 public boolean delete()
객체가 지정하는 파일을 삭제합니다. 삭제될 목표 파일이 디렉토리인 경우, 삭제를 위해 비워야 합니다.

결과:
파일이 삭제되는 경우 true, 그렇지 않으면 false
오류: SecurityException
보안 관리 프로그램이 있는 경우, 응용프로그램이 해당 파일을 삭제할 수 있는지를 보기 위해 File의 경로명으로 checkDelete 메소드가 호출됨
참조:
getPathcheckDelete
hashCode
 public int hashCode()
파일에 대한 해시 코드를 계산합니다.

결과:
File 객체에 대한 해시 코드값
대체:
Object 클래스에 있는 hashCode
equals
 public boolean equals(Object obj)
객체를 지정된 객체와 비교합니다. 인수가 null이 아니고 경로명이 객체의 경로명인 경우 File이라면, true를 리턴합니다.

매개변수:
obj - 비교할 객체
결과:
객체가 동일한 경우 true, 그렇지 않으면 false
대체:
Object 클래스에 있는 equals
toString
 public String toString()
객체의 문자열 표현을 리턴합니다.

결과:
객체의 경로명을 제공하는 문자열
대체:
Object 클래스에 있는 toString
참조:
getPath

신고

'Programming > JAVA' 카테고리의 다른 글

JNA (Java Native Access)  (0) 2015.03.14
[JAVA] 자바 실행파일 만들기  (0) 2015.03.01
JGoodies JAVA Swing API  (0) 2015.02.07
클래스 java.io.File  (0) 2013.05.29
평년/윤년 구하기  (0) 2013.03.02
날짜  (0) 2013.03.02


Posted by injunech

티스토리 툴바