使用递归方法替换两个不同目录下html文件中的图片
如何使用递归方法替换存在于不同路径下的html文件中的图片?
偶然的机会下,我发现了一个有趣的东西,现在分享出来供大家闲暇的时候看看。
首先,我们在自己的电脑磁盘中建立一个文件夹,名字可以随便取,我选择的是我的e盘,在e盘下建立可了一个名为a的文件夹,然后再文件夹下又建立了一个名为b的文件夹,在该文件夹下建立了一个名为a.html的文件,如图所示:
在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();
}
运行代码,然后重新双击两个网页文件,便可以发现图片调换了。