作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个服务器可以替换文件中的一些字符串。它看起来像这样:
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,但(到目前为止)我还没有找到执行相反操作的库。
最佳答案
这是因为 .class
文件是二进制的。您正在以 UTF-8 字符串的形式读取文件。因此,当您将其写回时,它会将其写为格式错误的 UTF-8 字符串(因此魔数(Magic Number)发生变化)。
只要您不尝试替换多字节字符,您就可以更改
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'));
它应该按您的预期工作。
关于java - 在 NodeJs 中编写 Java.class 文件(保留魔数(Magic Number)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28349233/
我是一名优秀的程序员,十分优秀!