javascript - nodejs 修改hosts文件的疑问?
伊谢尔伦
伊谢尔伦 2017-04-11 11:58:27
[JavaScript讨论组]

现需求是读入A文件和B文件,将A文件中某段文字换成,B文件中的内容,保存A文件。

读入A、B文件没问题,但是如何在A文件中找出对应的位置,并将其换成B文件呢?

文件格式如下

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1    localhost
255.255.255.255    broadcasthost
::1             localhost


# Modified hosts start

    ..... 此处为更换内容!
    
# Modified hosts end
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
高洛峰

换个思路!

  1. 将hosts文件读入后使用 .split('# Modified hosts start') 将文件分割成数组两部分,第一部分保存原有hosts文件的头部;

  2. 将抓取来的文件也通过这种方式分割,将第二部分即为要更换的内容;

  3. 将1、2步的内容合并后写入hosts问即可!

const fs     = require('fs');
const https  = require('https');
const os = require('os');
var oldHeard = fs.readFileSync('/etc/hosts','utf8').split('# Modified hosts start')[0];
var newMain  = null;

https.get('https://coding.net/u/scaffrey/p/hosts/git/raw/master/hosts', (res) => {
  res.pipe(fs.createWriteStream(os.homedir()+'/hosts')).on('close',()=>{
     //读入临时文件
    newMain = fs.readFileSync(os.homedir()+'/hosts','utf8').split('# Modified hosts start')[1];
     //写入新的文件
    fs.writeFileSync('/etc/hosts',oldHeard+'# Modified hosts start'+newMain+'\n# Refresh: '+new Date());
    //删除临时文件
    fs.unlinkSync(os.homedir()+'/hosts');
    console.log('/etc/hosts','更新成功!');
  });
}).on('error', (e) => {
  console.error(e);
});
ringa_lee

写一个正则匹配一下

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号