자바 액세스 레 지 스 트

7122 단어 자바레 지 스 트
자바 프로그램 은"write once,run everywhere"이기 때문에 자바 로 레 지 스 트 를 읽 고 쓰 면 프로그램의 크로스 플랫폼 성 이 떨 어 집 니 다.자바 레 지 스 트 에 대한 작업 은 jdk 1.4 이전 버 전에 서 불가능 합 니 다.JNI 로 만 이 루어 집 니 다.그러나 jdk 1.4 이후 제 공 된 prefs 패 키 지 는 windows 레 지 스 트 를 조작 할 수 있 지만 루트 는 SOFTWARE/JavaSoft/prefs 에서 만 작 동 할 것 입 니 다.이런 딜레마 때 문 일 것 입 니 다.플랫폼 과 상 관 없 이 windows 에 대한 의존 도 를 고려 해 야 합 니 다.다음은 두 가지 측면 에서 레 지 스 트 에 대한 조작 을 소개 한다.
    1.JDK 가 제공 하 는 Preferences 클래스 사용
우선 Preferences 의 대상 을 받 습 니 다.이 대상 은 레 지 스 트 의 어느 위치 에 정 보 를 기록 해 야 하 는 지,즉 노드 를 규정 합 니 다.그리고 put(String key,String value)또는 putInt(),tDouble()등 으로 관련 항목 에 값 을 부여 합 니 다.다음은 데모 프로그램 입 니 다.
 

  
  
  
  
  1. import java.util.prefs.Preferences; 
  2.  
  3. public class TestPrefs { 
  4.  
  5.     String[] keys = {"version""initial""creator"}; 
  6.     String[] values = {"1.3""ini.mp3""[email protected]"}; 
  7.  
  8.     //   
  9.     public void writeValue() { 
  10.         // HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs .  
  11.         Preferences pre = Preferences.systemRoot().node("/javaplayer"); 
  12.         for (int i = 0; i < keys.length; i++) { 
  13.             pre.put(keys[1], values[1]); 
  14.         } 
  15.     } 
  16.  
  17.     public static void main(String[] args) { 
  18.         TestPrefs reg = new TestPrefs(); 
  19.         reg.writeValue(); 
  20.     } 

    위의 코드 를 실행 하면 레 지 스 트 에 있 는 HKEYLOCAL_MACHINE\\Software\JavaSoft\prefs\\javaplayer 항목 에 관련 값 을 기록 하 였 습 니 다.
    마지막 으로 몇 가 지 를 더 설명 하 겠 습 니 다.
1:당신 의 노드 의 이니셜 은 대문자 로 쓰 지 마 세 요.그렇지 않 으 면 등록 표 의 항목 앞 에'/'를 추가 합 니 다.
2:레 지 스 트 의 값 도 XML 파일 에 가 져 올 수 있 습 니 다.구체 적 인 방법 은 관련 문 서 를 보십시오.
3:코드 에 있 는 Preferences pre=Preferences.systemRoot().node("/javaplayer")를 사용 하면;Preferences pre=Preferences.userRoot().node("/javaplayer")로 바 꾸 기;그 에 상응하는 HKEYLOCAL_MACHINE 는 HKEY 가 됩 니 다.LOCAL_USER。
 
 
2.jRegistry 로 등록 표를 조작 합 니 다.
jRegistry 는 JNI 로 WINDOWS 레 지 스 트 API 를 패키지 하여 자바 개발 자가 windows 레 지 스 트 에 접근 하 는 것 을 편리 하 게 합 니 다.먼저 jRegistryKey.jar 와 jRegistryKey.dll 을 소개 합 니 다.이 두 파일 은 jRegistry 를 사용 하여 레 지 스 트 리 를 조작 하 는 데 필요 한 파일 입 니 다.하 나 는 jar 가방 이 고 자바 류 를 포함 한 파일 입 니 다.    하 나 는 동적 링크 라 이브 러 리 파일 로 레 지 스 트 에 접근 하 는 데 필요 한 로 컬 코드(즉 C/C++)를 제공 합 니 다.
다음은 사용 절 차 를 상세 하 게 소개 한다.
1.JBuilder 의 메뉴 Project->Project Properties->Required Libraries 에 jRegistryKey.jar 를 추가 하거나 환경 변수 classpath 에 이 jar 파일 을 추가 합 니 다.
2.jRegistryKey.dll 을 프로젝트 의 현재 디 렉 터 리 에 두 기;
3.방문 등록 표 류 에서 import 이 문 구 는 import ca.beq.util.win 32.registry.*;이 가방 에는 레 지 스 트 리 키 와 레 지 스 트 리 밸 류 두 가지 종류 가 있다.그 중에서 Registry Key 는 레 지 스 트 키 의 자바 로 creat()와 delete()방법 으로 key 를 만 들 고 삭제 하 며 하위 키 와 값,set 와 get 키 의 값 등 을 제공 합 니 다.RegistryValue is the Java? representation of a registry value (defined as a name, a type, and data).
4、새 키 만 들 기:RegistryKey r=new RegistryKey(RootKey.HKEYCURRENT_USER, "Software\\BEQ Technologies");r.create();
 
5、키 만 들 기:RegistryKey r=new RegistryKey(RootKey.HKEYCURRENT_USER, "Software");r.createSubkey("BEQ Technologies");
 
6.존재 하 는 키 를 삭제 합 니 다:
 
try {
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software\\BEQ Technologies");
r.delete();
} // try
catch(RegistryException re) {
re.printStackTrace();
} // catch
 
 
7,매 거 진 하위 키:RegistryKey r=new RegistryKey(RootKey.HKEYCURRENT_USER, "Software");if(r.hasSubkeys()) { Iterator i = r.subkeys(); while(i.hasNext()) { RegistryKey x = (RegistryKey)i.next(); System.out.println(x.toString()); } // while} // if
 
8.레 지 스 트 리 에 있 는 키 의 값 읽 기:RegistryKey r=new RegistryKey(RootKey.HKEYCURRENT_USER, "Software\\BEQ Technologies");if(r.hasValue("myValue")) { RegistryValue v = r.getValue("myValue"); System.out.println(v.toString());//} // if
주:v.toString()은 my Value 에 대응 하 는 키 값 일 뿐,my Value 키 에 대응 하 는 값 데 이 터 를 얻 으 려 면 String str=v.getDate().toSting()이 필요 합 니 다.
9.레 지 스 트 리 에 있 는 키 의 값 설정:RegistryKey r=new RegistryKey(RootKey.HKEYCURRENT_USER, "Software\\BEQ Technologies");RegistryValue v = new RegistryValue("myVal", ValueType.REG_SZ, "data");r.setValue(v);
 
10.특정한 키 의 모든 값 을 매 거 합 니 다:
 
RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, "Software");if(r.hasValues()) { Iterator i = r.values(); while(i.hasNext()) { RegistryValue v = (RegistryValue)i.next(); System.out.println(v.toString()); } // while} // if
다음은 데모 프로그램 입 니 다.참고 하 시기 바 랍 니 다.
 
// create a new key, "Test", under HKLMRegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, "Test");if(!r.exists()) {r.create();} // if // create value entriesRegistryValue v = new RegistryValue("aString", ValueType.REG_SZ, "test");r.setValue(v); v.setName("aDword");v.setType(ValueType.REG_DWORD);v.setData(new Integer(0x1001001));r.setValue(v); // read value entriesIterator i = r.values();while(i.hasNext()) {v = (RegistryValue)i.next();System.out.println(v.toString());} // while // delete registry keyr.delete();
 
다음으로 이동:http://www.cnblogs.com/webcyz/archive/2011/01/07/1929298.html

좋은 웹페이지 즐겨찾기