JAVA DLL 파일 버 전 가 져 오기

2157 단어
최근 자바 가 DLL 파일 버 전 을 가 져 오 는 문제 가 발생 했 습 니 다. JNI 를 통 해 C + + 를 직접 호출 하여 버 전 번 호 를 가 져 오 려 고 했 지만 프로그램 실행 환경 부 는 windows 아래 에 있어 서 LINUX 로 이전 해도 실행 할 수 없 게 되 었 습 니 다. 나중에 인터넷 에서 오랫동안 문제 해결 방안 을 찾 아 보지 못 했 습 니 다. 아예 DLL 파일 내 부 를 연 구 했 습 니 다. 코드 는 다음 과 같 습 니 다.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class T {
    public static void main(String[] args) throws Exception{
        String filePath = "C:\\WINDOWS\\twain_32.dll";
        File file = new File(filePath);
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        String s = "F i l e V e r s i o n";
        byte[] b = s.getBytes();
        for (int i = 0; i < b.length; i++) {
            if(b[i] == 32){
                b[i] = 0;
            }
        }
        String str = new String(b);
          
        byte[] data = null;
          
        while(reader.ready()){
            String line = reader.readLine();
            int index = line.indexOf(str);
            if(index > 0){
                int len = index + str.length() + 5;
                String sb = line.substring(len,len+16);
                data = sb.getBytes();
                break;
            }
        }
          
        int version1 = getVersion(data, 0, 1);
        int version2 = getVersion(data, 3, 5);
        int version3 = getVersion(data, 7, 9);
        int version4 = getVersion(data, 11, 15);
          
          
        String version = version1 + "." + version2 + "." + version3 + "." + version4;
          
        System.out.println(version);
        System.out.println(new String(data));
    }
      
    public static int getVersion(byte[] data,int start,int end){
        int version = 0;
        int len = end-start;
        byte[] d = new byte[len];
        for (int i = start,j=0; i < end; i++,j++) {
            d[j] = data[i];
        }
        version = Integer.parseInt(new String(d).trim());
        return version;
    }
}

 
다음으로 전송:https://blog.51cto.com/hyssmt/1280282

좋은 웹페이지 즐겨찾기