使用递归方法替换两个不同目录下html文件中的图片

使用递归方法替换两个不同目录下html文件中的图片

如何使用递归方法替换存在于不同路径下的html文件中的图片?

偶然的机会下,我发现了一个有趣的东西,现在分享出来供大家闲暇的时候看看。
首先,我们在自己的电脑磁盘中建立一个文件夹,名字可以随便取,我选择的是我的e盘,在e盘下建立可了一个名为a的文件夹,然后再文件夹下又建立了一个名为b的文件夹,在该文件夹下建立了一个名为a.html的文件,如图所示:图中为a文件夹下b文件夹内的内容
在a.html文件中写入一句html代码:<img src=""/>
然后去网上随便找一张图片,右键复制该图片的地址,然后将复制的图片地址放在该文件的双引号内。
然后复制a.html文件,放进d文件夹中,打开复制的文件,在网上再找一张图片,同样的方式获得该图片的地址,然后将复制的地址放在双引号内,此处需注意:图片之间的内容差距最好大一点,方便看效果。建议在修改保存好以后双击文件打开看看效果,如果图片显示没有问题,再进行下一步代码的书写。
书写递归代码:
首先,我们建一个类,在main函数中写入主要的思路代码。在编程过程中,我们应养好良好的代码书写习惯,首先是注释,一个良好的注释能提高代码的可读性,便于他人阅读,同时还需要有清晰的思路,代码不应放在一个主方法体内,提前规划好思路,然后将需要的方法提取出来,在主方法中调用。

    public static void main(String[] args) throws Exception {
        //将文件夹的路径作为参数传给File有参构造,得到file对象
        File file = new File("D:/a");
        //定义两个字符串,分别用于存放两个图片的地址
        String oldImg="http://b-ssl.duitang.com/uploads/blog/201503/06/20150306190503_ATdPW.jpeg";
        String newImg="http://hbimg.b0.upaiyun.com/5cf1ec91b942c27025329ee6b283cff0f5dee6284cb04-ArizGj_fw658";
        //调用递归方法
        replaceImgSrc(file,newImg,oldImg);
        System.out.println("----------完成----------");
    }

然后补全方法:
1、使用递归完成图片的替换方法:

 //定义一个递归方法,交换图片
    static void replaceImgSrc(File file, String newSrc, String oldSrc) throws Exception {
        //如果文件夹不存在或者文件不存在就跳出方法体
        if(file==null||!file.exists()){
            return;
        }
        //如果文件夹存在,且是个文件夹便执行获取图片地址的方法
        if(file.exists()&&file.isFile()){
            String content=getTxtToString(file);
            //如果图片地址不为便执行写图片的方法
            if(content !=null){
                fileWrite(file,content.replace(oldSrc,newSrc));
            }
        }
        File[] files = file.listFiles();
        if(files!=null){
            for(File f:files){
                //调用自身,完成图片的写
                replaceImgSrc(f,oldSrc,newSrc);
            }
        }
    }

2、使用带缓冲区的输出流写图片

//使用带缓冲器的输出流,将图片输出
    private static void fileWrite(File file,String contents) throws Exception {
        BufferedWriter out = new BufferedWriter(new FileWriter(file));
        out.write(contents);
        out.flush();
        out.close();
    }

3、使用带缓冲区的输入流,将图片读入

//使用带缓冲区的输入流,将图片读入
    private static String getTxtToString(File file) throws Exception {
        StringBuffer result = new StringBuffer();
        BufferedReader br = new BufferedReader(new FileReader(file));
        String s=null;
        while((s=br.readLine())!=null){
            result.append(s).append(System.lineSeparator());
        }
        return result.toString();
    }

运行代码,然后重新双击两个网页文件,便可以发现图片调换了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜甜圈的小饼干

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值