• 如何动态修改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下。

  • 相关阅读:
    Linux系统-命令行快捷键
    Golang理解-Context包
    Golang理解-垃圾回收机制
    Linux系统-Systemd资源控制
    Linux系统-"cannot access Input/output error"
    Linux系统-ntpdate时间同步报错
    Golang理解-数组和切片
    Golang理解-位运算
    Golang理解-指针
    Maven配置,使用IntelliJ IDEA和Maven创建Java Web项目
  • 原文地址:https://www.cnblogs.com/longronglang/p/7606383.html
Copyright © 2020-2023  润新知