读取Chrome书签文件
使用C#读取Chrome浏览器的本地书签文件,当前文件在C盘下用户文件夹\AppData\Local\Google\Chrome\User Data\Default\下的Bookmarks
打开这个文件我们发现就是一个json文本文件
{
"checksum": "e723a57c9d9cbcae27ce0e1f8a5b7e71",
"roots": {
"bookmark_bar": {
"children": [ {
"date_added": "",
"id": "",
"meta_info": {
"last_visited_desktop": ""
},
"name": "微软 Bing 搜索 - 国内版",
"type": "url",
"url": "https://cn.bing.com/"
} ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "书签栏",
"type": "folder"
},
"other": {
"children": [ ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "其他书签",
"type": "folder"
},
"synced": {
"children": [ ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "移动设备书签",
"type": "folder"
}
},
"version":
}
为了方便读取操作还是将json字符串转换为对象这里分析json结构创建对应的对象
namespace DataOperation.Model
{
/// <summary>
/// Chorme书签保存文件结构
/// </summary>
public class ChromeBookmarks
{
public string checksum { get; set; }
public bookmark roots { get; set; }
//public string sync_transaction_version { get; set; }
public string version { get; set; }
//public string synced { get; set; }
} public class bookmark
{
public datameta bookmark_bar { get; set; }
public datameta other { get; set; }
} public class datameta
{
public List<datameta> children { get; set; }
public string date_added { get; set; }
public string date_modified { get; set; }
public string id { get; set; }
public meta_info meta_info { get; set; }
public string name { get; set; }
public string sync_transaction_version { get; set; }
public string type { get; set; }
public string url { get; set; }
} public class meta_info
{
public string last_visited_desktop { get; set; }
}
}
利用.NET提供的Newtonsoft.Json.dll来进行转换这里预先封装两个方法
/// <summary>
/// json序列化
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="data">数据</param>
/// <returns></returns>
public static string ListToJson<T>(T data)
{
string str = string.Empty;
try
{
if (null != data)
str = JsonConvert.SerializeObject(data);
}
catch (Exception e)
{ }
return str;
} /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="jsonstr">数据</param>
/// <returns></returns>
public static Object JsonToList<T>(string jsonstr)
{
Object obj = null;
try
{
if (null != jsonstr)
obj = JsonConvert.DeserializeObject<T>(jsonstr);//反序列化
}
catch (Exception e)
{ }
return obj;
}
剩下的就是将Bookmarks文本文件读取后进行转换了
下面部分代码
/// <summary>
/// 读取文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string FileRead(string filePath)
{
string rel = File.ReadAllText(filePath);
return rel;
} /// <summary>
/// 获取Chrome浏览器书签对象
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public ChromeBookmarks GetChromeBookmarksData(string filePath)
{
string str = FileRead(filePath);
object chromeBookmarks = JsonToList<ChromeBookmarks>(str);
if (chromeBookmarks != null)
{
return (ChromeBookmarks)chromeBookmarks;
}
return null;
}
读取Chrome书签文件的更多相关文章
- 手机chrome书签文件导出教程
重大发现!!!本人亲自测试可以导出chrome书签文件登录下面的链接https://takeout.google.com/settings/takeout/custom/chrome?pli=1
- Chrome书签被篡改之后的恢复
chrome书签和备份存放的路径:(XXXX为用户名)(AppData文件夹为隐藏文件夹) \Users\XXXX\AppData\Local\Google\Chrome\User Data\Defa ...
- JavaScript进阶(六)用JavaScript读取和保存文件
用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了.而出于安全原因,只有IE才提供访问文件的API:但随着HTML 5的到来, ...
- .NET Core的文件系统[1]:读取并监控文件的变化
ASP.NET Core 具有很多针对文件读取的应用.比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取.如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目 ...
- 使用js-xlsx库,前端读取Excel报表文件
在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...
- Java基础-输入输出-2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
2.编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt ...
- 前端读取Excel报表文件
在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...
- matlab 连续读取多个文件
方法1: 把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 ...
- 编写IoDemo.java的Java应用程序,程序完成的功能是:首先读取text.txt文件内容,再通过键盘输入文件的名称为iodemo.txt,把text.txt的内容存入iodemo.txt
package zuoye; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcep ...
随机推荐
- JavaScript模板引擎使用
1. [代码]tmpl.js // Simple JavaScript Templating// John Resig - http://ejohn.org/ - MIT Licensed(f ...
- Objective-C 中Socket常用转换机制(NSData,NSString,int,Uint8,Uint16,Uint32,byte[])
最近项目中要用到socket通讯,由于涉及到组包问题,所以需要数据类型之间的来回转换,现在分享出来 如果想要请教Socket的问题请留言,我会随时回答的 1. int类型转16进制hexstring ...
- AJAX 用户验证方法
JSP <td width="10%" class="main_matter_td">真实姓名</td> <td width=&q ...
- http的安全方法和幂等性
最近在研究http,看到http的安全方法和幂等性部分,不太明白,尤其是"post方法是非幂等的"不理解,进过查资料,找到以下两篇有价值的文章,特转过来! 理解HTTP幂等性 转自 ...
- WC2017游记
Day0 到杭州之后出了点锅换了辆车,等了好久才开= =到宿舍发现路由器就在房门口,稳啊,过了一会儿就连不上了= =而且只有门口那个连不上,可以连上楼下的= =之后干了啥也忘了…… Day1 上午直接 ...
- python-day-9- 进程-异步IO\
本节内容 进程 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 多进程multiprocessing multiprocessing is a package that sup ...
- 【旧文章搬运】Windows句柄分配算法(二)
原文发表于百度空间,2009-04-04========================================================================== 在创建句柄 ...
- 国外1.5免费空间000webhost申请方法
空间大小:1500M 支持语言:PHP 数 据 库:MYSQL 国家/地区:国外 申请地址:http://www.000webhost.com/ 1500M/100GB/PHP/MYSQL/FTP ...
- C# 利用Aspose.Slides.dll将本地ppt文档转化成pdf(完美破解版 无水印 无中文乱码)
下载Aspose.Slides.dll http://pan.baidu.com/s/1kVPjnzL 添加引用C#代码. using System; using System.Collectio ...
- SCUT - 290 - PARCO的因数游戏 - 博弈论
https://scut.online/p/290 一个 N 个数的取数游戏,Kaildls 和 Parco 轮流操作,每次操作从 N 个数中取一个数 y 并把他变成 y-x(满足 x | y 且x ...