一、问题
我们下载到本地的一些不错的csdn文件,有时候需要离线时候打开查看,点击打开会自动跳转首页,这样搞得自己非常烦。
二、原因
出现这种情况的原因是csdn的index.html里面有个方法onerror进行跳转,当点击本地保存的csdn文件时,会进行自动跳转。onerror方法如下:
三、解决方法
1、我们可以notepad++打开,ctrl+H,替换所有的onerror字段为xxxx,然后保存,这样就不会自动跳转了。
2、那么又出现一种情况,我们需要看的资料有这么多呢,难道一个文件一个文件去保存吗
3、可以考虑写个程序,遍历该文件下的所有文件,读出所有内容,将onerror字符串替换为xxxx,这样执行一下,就可以搞定了,花不到10秒,这一堆文件就好了。代码如下。需要的小伙伴可以收藏一下。
(1)先获取保存离线文件的文件夹路径,遍历改路径下的文件和文件夹。
(2)是文件夹就跳过,文件就读取所有内容,并执行替换replaceAll方法。
(3)最后将替换后的内容再次写入文件。
import com.jiankang.filecontentreplace.config.FileConfig; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.List; /** * FileExecute * * @author jiankang.xu * @date 2021/9/20 */ public class FileExecute { public final static String LINE_SEP = System.getProperty("os.name").toLowerCase().contains("linux") ? "\n" : "\r\n"; public static void main(String[] args) { String filepath = "C:\\Users\\徐健康\\Desktop\\0920"; String result = executeFile(filepath); System.out.println(result); } private static String executeFile(String filepath){ File file = new File(filepath); File[] files = file.listFiles(); for (File subFile : files) { if(subFile.isDirectory()){ continue; } if(subFile.isFile()){ try { List<String> lines = IOUtils.readLines(new FileInputStream(subFile.getAbsolutePath())); String indexContent = String.join(LINE_SEP, lines); indexContent = indexContent.replaceAll("onerror", "xxxx"); IOUtils.write(indexContent, new FileOutputStream(subFile.getAbsolutePath())); }catch (Exception e){ } } } return "success"; } }
四、总结
以上就是如何解决csdn网页离线后打开自动跳转的问题,然后写了个脚本批量处理下载的所有csdn文件,觉得不错的话,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。