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



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

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类型?我注意到有很多库可以阅读mimetype,但(到目前为止)我还没有找到一个相反的库。

这是因为.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'));

它应该如你所期望的那样工作。

相关内容

  • 没有找到相关文章

最新更新