[erlang-questions] Jinterface: communication between Java and Erlang using system file
Robert Raschke
rtrlists@REDACTED
Fri Mar 18 11:15:46 CET 2011
Hi Zab,
On Thu, Mar 17, 2011 at 9:02 PM, Zabrane Mickael <zabrane3@REDACTED> wrote:
> Hi guys,
>
> Please, have a look to the following simple Java code
> which try to encode a simple Erlang tuple and save it to disk.
>
> -8-8-8-8-8-8-8-8-8-8 snip -8-8-8-8-8-8-8-8-8-8
>
> // encode a simple Erlang tuple {ok, "Hello World"}
> OtpErlangObject[] reply = new OtpErlangObject[2];
> reply[0] = new OtpErlangAtom("ok");
> reply[1] = new OtpErlangBinary("Hello World!");
> OtpErlangTuple tuple = new OtpErlangTuple(reply);
>
> // create an OtpOutputStream object from the binary
> OtpErlangBinary binary = new OtpErlangBinary(tuple);
> OtpOutputStream oos = new OtpOutputStream(binary);
>
> oos.writeTo(fos);
>
> // write the Erlang binary term to a file
> File f = new File ("a.txt");
> FileOutputStream fos = new FileOutputStream(f);
>
> fos.flush();
> fos.close();
>
> -8-8-8-8-8-8-8-8-8-8 snip -8-8-8-8-8-8-8-8-8-8
>
> When trying to read it from disk, I got an exception:
> $ erl
> 1> {ok, Bin} = file:read_file("a.txt").
> {ok,<<109,0,0,2,17,172,237,0,5,115,114,0,38,99,111,109,
> 46,101,114,105,99,115,115,111,110,46,111,...>>}
> 2> binary_to_term(Bin).
> ** exception error: bad argument
> in function binary_to_term/1
> called as
> binary_to_term(<<109,0,0,2,17,172,237,0,5,115,114,0,38,99,111,109,46,
>
> 101,114,105,99,115,115,111,110,46,111,116,...>>)
>
>
> What am I doing wrong?
> Help appreciated ...
>
> Regards,
> Zab
>
>
I haven't done much Java file writing/reading for a long time, so I've
forgotten a lot.
But is it possible that the file gets written in "text" mode? And the IO
system helpfully translates line ending characters for you?
Since you're writing binary data, it's always a good idea to make sure
you're writing to a binary file.
If I remember correctly the Erlang file module functions assume binary by
default. Not sure about Java tho'.
Robby
More information about the erlang-questions
mailing list