如何动态修改windows下的host文件

如何动态修改windows下的host文件

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

为了万无一失,先备份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下。

EOF

本文作者:久曲建的测试窝
本文链接:https://www.cnblogs.com/longronglang/p/7606383.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
优秀不够,你是否无可替代

软件测试交流QQ群:721256703,期待你的加入!!

欢迎关注我的微信公众号:软件测试君
如何动态修改windows下的host文件

如何动态修改windows下的host文件

上一篇:C# where用法


下一篇:linux如何查看系统版本