事件背景:为了测试数据提交后,需要在另一个环境的多个测试节点下去验证测试数据是否添加成功,找了一大堆放法,用了比较笨的方法实现了。不多废话思路如下:

为了万无一失,先备份hosts文件内容:

1.读取hosts所有文本内容,代码如下

/**
* 获取文件全部内容
* @param fileName
* @return
*/
public String readToString(String fileName) {
String encoding = "UTF-8";
File file = new File(fileName);
Long filelength = file.length();
byte[] filecontent = new byte[filelength.intValue()];
try {
FileInputStream in = new FileInputStream(file);
in.read(filecontent);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
return new String(filecontent, encoding);
} catch (UnsupportedEncodingException e) {
logger.error("The OS does not support " + encoding);
e.printStackTrace();
return null;
}
}

2.清空hosts文件内容:

/**
* 清空文本内容
* @param fileName
*/
public void clearInfoForFile(String fileName) {
File file =new File(fileName);
try {
if(!file.exists()) {
file.createNewFile();
}
FileWriter fileWriter =new FileWriter(file);
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}

3.追加一行hosts,也可以多个,视情况写入

/**
* 在已有的文件后面追加信息
* @param fileName
* @param info
*/
public void appendInfoToFile(String fileName, String info) {
File file =new File(fileName);
try {
if(!file.exists()){
file.createNewFile();
}
FileWriter fileWriter =new FileWriter(file, true);
fileWriter.write(info);
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}

4.打开hosts绑定网站,这里我们以百度为例,提示无法连接。

5.在清空hosts文件,将备份的原内容写入即可完成还原hosts文件操作

6.测试代码如下:

@Test
public void run(){
String hosts =readToString("C:/Windows/System32/drivers/etc/hosts");
clearInfoForFile("C:/Windows/System32/drivers/etc/hosts");
appendInfoToFile("C:/Windows/System32/drivers/etc/hosts", "127.0.0.1 www.baidu.com");
System.setProperty("webdriver.chrome.driver", "tools/chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("https://www.baidu.com/");
try {
Thread.sleep(5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
clearInfoForFile("C:/Windows/System32/drivers/etc/hosts");
appendInfoToFile("C:/Windows/System32/drivers/etc/hosts", hosts);
}

笨方法实现,先Mark下。

如何动态修改windows下的host文件的更多相关文章

  1. windows下的host文件在哪里?做什么用的?

    在Window系统中有个Hosts文件(没有后缀名),在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\ ...

  2. 如何修改windows系统的host文件

    方法/步骤   首先我们打开我的计算机     然后我们进入C盘的C:\Windows\System32\drivers\etc这个目录下面找到host这个文件   双点击打开,选择计算本打开,这时可 ...

  3. 怎么样修改win7下的host文件

    由于在访问tensorflow官网时访问不了,需要修改hosts文件,然而win7下因为权限问题导致不能修改hosts文件,解决方法如下: 1.先复制hosts文件到别的地方,修改完后再覆盖回来.中间 ...

  4. windows下的host文件在哪里,有什么作用?

    在Window系统中有个Hosts文件(没有后缀名),在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\ ...

  5. Windows 下目录及文件向Linux同步

    本文解决的是Windows 下目录及文件向Linux同步的问题,Windows向 Windows同步的请参考:http://www.idcfree.com/article-852-1.html 环境介 ...

  6. Windows下如何将一个文件夹通过Git上传到GitHub上(转)

    在通过windows系统的电脑上写代码,需要将项目上传到GitHub上去.比如在Pycharm上写Django后端,整个项目是一个文件夹的形式,那么怎么才能这个文件夹通过Git命令上传到GitHub上 ...

  7. 用脚本如何实现将Linux下的txt文件批量转化为Windows下的txt文件?

    众所周知,Windows和Linux的文件换行回车格式不同,Windows下换行格式是\r\n(回车+换行),Linux下换行格式为\n(只是换行),因此,其中一个操作系统的文本文件若需要在另外一个中 ...

  8. windows下python检查文件是否被其它文件打开

    windows下python检查文件是否被其它文件打开.md 有时候我们需要能够判断一个文件是否正在被其它文件访问,几乎不可避免的要调用操作系统接口 from ctypes import cdll i ...

  9. Windows下创建.gitgnore文件

    相信使用过git的朋友可能遇到过,直接在windows下创建.gitgnore文件失败.类似截图那样 上网查了一下,有两种方法. 方法1: 此方法较为简单,前提是安装了git bash. 用git b ...

随机推荐

  1. 学习 TTreeView [1] - TTreeNodes、TTreeNode 与 Items、Items.Count、Items.Clear

    填写 TTreeView 的内容一般是这样开始的(下图), 不过我觉得最好习惯用动态建立. 打个比方: 譬如 TreeView 是一个军营的"营部"! 这里会有营长.连长.排长.班 ...

  2. SSM 关于service和dao的封装

    近期由于客户需求,所以我们整个小组开始开发java项目. 虽然很久以前也是系统学习过.不过干了这么多年 .net  ,有关java的早就扔了. 好了,废话不多说.我们看看SSM 关于service和d ...

  3. 在VMware Workstation上安装Ubuntu 16.04 Server操作系统

    Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!

  4. Chemical table CodeForces - 1012B

    题意: 一个棋盘 对于任何一个棋盘中的矩形 如果 任意三角存在棋子 则第四个角会自动生成一个棋子  求铺满整个棋盘 我们至少要向棋盘里加多少枚棋子 解析: 这题就是求图中有多少个连通图,可以直接dfs ...

  5. Fantastic Graph 2018 沈阳赛区网络预赛 F题

    题意: 二分图 有k条边,我们去选择其中的几条 每选中一条那么此条边的u 和 v的度数就+1,最后使得所有点的度数都在[l, r]这个区间内 , 这就相当于 边流入1,流出1,最后使流量平衡 解析: ...

  6. SQLServer过期的解决方案

    看图吧,不喜欢说话,图里面我都打备注了 0SQLService异常 1找到安装中心 2升级版本 3监测ing 4输入升级key 5同意并下一步 6下一步 7下一步 8下一步 9收工 10可以打开了

  7. [SDOI2009]Bill的挑战——全网唯一 一篇容斥题解

    全网唯一一篇容斥题解 Description Solution 看到这个题,大部分人想的是状压dp 但是我是个蒟蒻没想到,就用容斥切掉了. 并且复杂度比一般状压低, (其实这个容斥的算法,提出来源于y ...

  8. 域名、ip、以及通过域名访问网站、虚拟主机

    ip 是一个网站的id,是它的地址. 域名是为了解决ip比较难记住才引出的. 利用nginx来配置虚拟主机,通过域名可以访问该网站. 具体实现详见前面文章. 虚拟主机:可以实现在一台服务器虚拟出多个网 ...

  9. vue-cli内部webpack的打包优化

    在此之前,我们先谈谈前端项目的性能优化. 优化前端项目无非就是2方面的优化: 一.网络性能优化(重点) 减少请求数量(webpack的天职就是打包) 减少请求资源大小(压缩gzip,后端会完成) CD ...

  10. Java基础-使用Idea进行远程调试

    Java基础-使用Idea进行远程调试 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.