将chrome储存的密码转为MarkDown表格
时间:2019-12-07
本文章向大家介绍将chrome储存的密码转为MarkDown表格,主要包括将chrome储存的密码转为MarkDown表格使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在网上的账户信息很多都忘了,一般是用Chrome记着然后自动登录。今天看了下发现还挺多的,于是想把密码都放到个人笔记里,就写了个转换的方法。记录下。
private static final String IN_PATH = "D:\\out\\Chrome%20密码.csv"; private static final String OUT_PATH = "D:\\out\\out.txt"; public static void main(String[] args) throws IOException { String path = URLDecoder.decode(IN_PATH,"utf-8"); read(path,true); } /** * chrome 储存密码转为 markDown 表格形式 * @param path csv 文件路径 * @param isSkipIP 是否跳过IP网址 * @return String */ private static void read(String path, boolean isSkipIP) { BufferedReader bufferedReader = null; FileOutputStream outputStream = null; StringBuilder sb = new StringBuilder(); try { bufferedReader = new BufferedReader(new FileReader(path)); String str = null; List<String> strList = new ArrayList<>(); while ((str = bufferedReader.readLine())!=null){ strList.add(str); } for (int i = 0; i < strList.size(); i++) { String[] su = strList.get(i).split(","); String[] sa = new String[4]; String pattern = "([0-9]+\\.)+[0-9]+"; if (su.length > 4){ sa[0] = su[0]; sa[1] = su[1]; sa[2] = su[2]; sa[3] = su[3] + "," + su[4]; sa[3] = sa[3].replaceAll("\"",""); } else { sa = su; } if (i==1){ sb.append("|---|---|---|---|\r\n"); } boolean is = false; if (isSkipIP){ is = Pattern.matches(pattern, sa[0]); } if (!is){ sb.append("|"); for (int j = 0; j < 4; j++) { sb.append(sa[j]); sb.append("|"); if (j==3){ sb.append("\r\n"); } } } } log.info("开始输出..."); outputStream = new FileOutputStream(OUT_PATH); outputStream.write(sb.toString().getBytes(), 0, sb.toString().getBytes().length); log.info("成功输出到文件:{}", OUT_PATH); } catch (Exception e) { log.error("something is wrong, {}", e.getMessage()); e.printStackTrace(); } finally { try { if (bufferedReader!=null){ bufferedReader.close(); } if (outputStream!=null){ outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } }
原文地址:https://www.cnblogs.com/meijsuger/p/12002330.html
- 分布式计算,WCF+JSON+实体对象与WebService+DataSet效率大比拼
- 【自然框架】 页面里的父类—— 改进和想法、解释
- 线性神经网络
- 【数据可视化】深度解析大数据可视化设计案例分析
- 使用IE6看老赵的博客——比较完美版(可以在线查看、回复)
- 【Python环境】R vs Python:硬碰硬的数据分析
- 使用IE6看老赵的博客——jQuery初探
- matlab GUI基础8
- 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?
- 再论桥接模式(上)纸上谈兵
- 反馈型神经网络
- 竞争型神经网络续1
- 径向基神经网络续1
- "开门待客"还是“送货上门”?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 正则表达式 | 锚点
- adb shell读取设置手机ocd值以及ocd介绍
- sqli-labs练习(第三、四关)
- 使用 Python 操作 word文档
- sqli-labs练习(第五、六关)
- 分享一个Qt写的SMTP邮件客户端(库)
- mysql学习笔记
- MapReduce的常见输入格式之NlineInputFormat
- MapReduce的常见输入格式之KeyValueTextInputFormat
- MapReduce之 FileInputFormat的切片策略(默认)
- MapReduce之片和块的关系
- MapReduce的常见输入格式之CombineTextInputFormat
- MapReduce之Job提交流程
- MapReduce之自定义InputFormat
- MapReduce之MapTask工作机制