在NodeJs中编写Java.class文件(保留幻数)

时间:2015-02-05 16:35:06

标签: java android node.js magic-numbers

我有服务器替换文件中的某些字符串。它看起来像这样:

var stringToBeReplacedWith = "Cool text";

var data = fs.readFileSync(file, 'utf-8');

var RegExp = new RegExp("Stringtobereplaced", 'g'); // global search
data = fileContents.replace(RegExp, stringToBeReplacedWith);

fs.writeFileSync(file, data); 

代码通过Mime类型/编码更改来工作。

如何在更换字符串时确保保留Mime-Type?我注意到有很多库可以读取mimetype但是(到目前为止)我还没有找到一个反过来的库。

1 个答案:

答案 0 :(得分:2)

因为.class文件是二进制文件。您正在以UTF-8字符串的形式读取文件。因此,当你把它写回来时,它会把它写成格式错误的UTF-8字符串(因此幻数的变化)。

只要您不尝试替换多字节字符,就可以更改

var data = fs.readFileSync(file, 'utf-8');

var data = fs.readFileSync(file, 'binary');

fs.writeFileSync(file, data);

fs.writeFileSync(file, data, { encoding: 'binary' });

fs.writeFileSync(file, new Buffer(data, 'binary'));

它应该按预期工作。