2011-01-24 17 views
1

オブジェクトデータを格納するためにDataInputStreamを使用するJavaプログラムがあります。PythonでのJava DataInputStreamデータの作成

例:

DataInputStream tInput = new DataInputStream(getClass().getResourceAsStream(aDirectory + "/ResultItemInfo.dat")); 

    this._text = tInput.readUTF(); 

    this._image = tInput.readUTF(); 

    this._audio = tInput.readUTF(); 

    this._random = false; 
    if (tInput.read() == 1) { 
    this._random = true; 
    } 

    this._hasMenu = false; 
    if (tInput.read() == 1) { 
    this._hasMenu = true; 
    } 

ニース、そうではありませんか?

既存のデータセットがあり、今ではいくつかのレコードを追加する必要があります。私が作成しなければならないツールがJavaで書かれていても、これはかなり簡単です。残念ながら、Pythonで書かれているので、Pythonを使用してJavaアプリケーションから読み込むことができるファイルを作成する方法を発見する必要があります。

これを行う簡単な方法はありますか?最後の手段として

、私は可能性:

  • は、Javaアプリケーションを変更し、XMLを使用します。これは既存のすべてのデータとの互換性を失うため、私は実際にそれをしたくありません。
  • Jythonを使用してください。可能な解決策ですが、私は純粋なC-Pythonが必要です。
  • データ形式をリバースエンジニアリングします。どちらも良い解決策ではありません。

答えて

4

文字列を読み取り可能にするには、2バイトのカウンタと、カウンタが示すように正確に同じ数のUTF-8エンコードデータを格納する必要があります。

だから私は、コードのこの作品は、Unicode文字列datareadUTF()を読むことができるどのような方法を記述する必要がありますお勧め:

encoded = data.encode('UTF-8') 
count = len(encoded) 
msb, lsb = divmod(count, 256) # split to two bytes 
outfile.write(chr(msb)) 
outfile.write(chr(lsb)) 
outfile.write(encoded) 

outfile(例えば「wb」)バイナリモードで開いていなければなりません。 これはJavaインターフェイスDataInputの説明に従います。私はこれを実行しようとしなかった。

関連する問題