java.io v2.4.0
java.io
A node implement of "java.io.InputObjectStream.readObject()" and "java.io.OutputObjectStream.writeObject()".
Protocol
- Object Serialization Stream Protocol (A protocal is not all, still need to refer to the implementation.)
- Object Serialization Stream Protocol Mind Node
Install
$ npm install java.io --saveUsage
1. readObject()
var fs = require('fs');
var io = require('java.io');
var InputObjectStream = io.InputObjectStream;
var OutputObjectStream = io.OutputObjectStream;
// Read object and return whole info
var buf = fs.readFileSync('./test/fixtures/out/int/1024.bin');
var in = new InputObjectStream(buf, true);
var obj = in.readObject();
// Read object but return value only
var buf2 = fs.readFileSync('./test/fixtures/out/int/1024.bin');
var in2 = new InputObjectStream(buf);
var obj2 = in.readObject();obj should be:
{
'$' : {
value : 1024
},
'$class' : {
name : 'java.lang.Integer',
serialVersionUID : '1360826667806852920',
flags : 2,
fields : [{
type : 'I',
name : 'value'
}],
superClass : {
name : 'java.lang.Number',
serialVersionUID : '-8742448824652078965',
flags : 2,
fields : [],
superClass : null
}
}
}obj2 should be:
1024if you only care about the first object from input stream, you could write the code briefly:
var buf3 = fs.readFileSync('./test/fixtures/out/map/boolean.bin');
var obj3 = InputObjectStream.readObject(buf);then obj3 should be:
{ 'true': true, 'false': false }2. writeObject(obj)
var outputObjectStream = new OutputObjectStream();
// 1. Passed in argument must contains the whole info
// 2. Every time calling the writeObject function
// will return the buf had written in
var buf = outputObjectStream.writeObject(obj);A brief style is also OK:
OutputObjectStream.writeObject(obj);3. OutputObjectStream.normalize(obj, type)
A convenient way to convert ordinary JavaScript object to object of standard format with whole info.
- params
- obj: accept all primitive value or primitive array and map
- type: string | boolean | int | short | long | char | byte | float | double |
- return: normalized object
var outputObjectStream = new OutputObjectStream();
var normalizedObj = OutputObjectStream.normalize(true);
var buf = outputObjectStream.writeObject(normalizedObj);normalize(null)
normalize('string')
normalize(true)
normalize(1) // quals to normalize(1, 'int')
normalize(-123456, long)
normalize([ true, false, false, false ], 'boolean')
normalize( {'true': true, 'false': false}, 'boolean')4. addObject()
If a class has writeObject/readObject methods, you need to implement the corresponding methods, and add them via addObject() before read or write the object.
var io = require('java.io');
io.addObject({{className}}, {{class}});Builtin classes:
- java.util.ArrayList
- java.util.LinkedList
- java.util.HashMap
- java.util.HashSet
- java.util.TreeMap
- java.util.TreeSet
- java.util.Date
Data structure
{
// if a object has it's own readObject/writeObject method
// save it's special value here
'_$': ...,
// value of object
'$': ...,
// class description
'$class': {
name: 'className',
serialVersionUID: 'SVUID',
flags: flags,
fields:
[ { type: 'F', name: 'primitiveProperty' },
{ type: 'L', name: 'objProperty', classname: 'Ljava/lang/String;' }],
superClass: parentClassDescriptionOrNull
}
}Incompatible between 1.x and 2.x
- decode java
[Btonew Buffer([1, 2, 3])not[1, 2, 3]#10
License
7 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago

