2014-12-17 2 views
0

사용자를 돕기 위해 Java 기반 데스크탑 제품이 .NET 기반 타사 응용 프로그램의 텍스트 기반 파일 출력과 함께 작동하도록 자동 구성하려고합니다. 이렇게하려면 출력 파일을 저장하는 위치를 결정하기 위해 타사 제품의 기본 설정을 읽으려고합니다.Java에서 .net 객체 비 직렬화

기본 설정은 이진 형식의 .NET 직렬화 된 개체에 저장되어있는 것 같습니다. 나는 이진 파일 바이트 18에서 시작, 다음이 포함되어 있기 때문에이 경우 같은데요 :

System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, ... ,[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, ... 

나는 .NET에 대해 잘 모른다 - 자바 내 일이다. 하지만이 파일에 객체에 매핑 된 문자열 사전이 포함되어 있음을 나타냅니다.

Google 검색에서 .NET 직렬화 형식에 대한 명확한 설명이 나타나지 않았습니다.

이미 전체 파일을 바이트 배열로 읽은 것으로 가정하면 바이트 배열을 Java를 사용하여 유용하게 변환 할 수 있습니까?

public Object decode(byte[] ary) { 
    // help me here? 
} 

이상

public Map<String, String> decode(byte[] ary) { 
    // help me here? 
} 

(이상적으로 타사 공급 업체가 명확하게 문서화 텍스트 형식으로 제공이 정보를 만들 것입니다.하지만 그들은 별도의 회사로, 내가 영향을 미칠 수

자신의 개발 일정).

+0

이 작업을 수행하더라도 매우 오류가 발생하기 쉽습니다. 나는 이것이 할 길이 아니라는 것을 사람들에게 확신시키려는 모든 노력을 기울일 것입니다. –

답변

0

모든 것이 어떻게 연재되는지에 달려 있습니다. BinaryFormatter을 사용하는 경우 다음과 같이 제안합니다. 지금 중지! 가능하면 열심히 시도하면 효과가 있지만, 약하고 솔직히 그만한 가치는 없습니다. Java 및 .NET 모두에서 사용할 수있는 여러 가지 교차 플랫폼 이진 직렬화 라이브러리가 있습니다. 가장 좋은 방법은 그 중 하나를 선택하고 해당을 직렬화에 사용하는 것입니다.

BinaryFormatter입니다.은 .NET 기반 코드에도 적합합니다. 결코 크로스 플랫폼 코드에 대한 좋은 선택입니다.

+0

@ 마크, 나는 연재 중이 아니다. 제 3자가 있고, 나는 선택을 통제 할 수 없다. –

+0

@SteveMcLeod 그러나 당신은 아마도 그들이 제공하는 API를 통해 그것을 deserialize 할 수 있고, 다른 적절한 선택으로 데이터를 다시 직렬화 할 수 있습니다 : 또한 단순히 사용하는 serializer를 물어 보았습니까? –

관련 문제