使用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书签文件的更多相关文章

  1. 手机chrome书签文件导出教程

    重大发现!!!本人亲自测试可以导出chrome书签文件登录下面的链接https://takeout.google.com/settings/takeout/custom/chrome?pli=1

  2. Chrome书签被篡改之后的恢复

    chrome书签和备份存放的路径:(XXXX为用户名)(AppData文件夹为隐藏文件夹) \Users\XXXX\AppData\Local\Google\Chrome\User Data\Defa ...

  3. JavaScript进阶(六)用JavaScript读取和保存文件

    用JavaScript读取和保存文件 因为Google还不提供同步插件数据的功能,所以导入和导出插件配置就必须和文件打交道了.而出于安全原因,只有IE才提供访问文件的API:但随着HTML 5的到来, ...

  4. .NET Core的文件系统[1]:读取并监控文件的变化

    ASP.NET Core 具有很多针对文件读取的应用.比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取.如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目 ...

  5. 使用js-xlsx库,前端读取Excel报表文件

    在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...

  6. 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 ...

  7. 前端读取Excel报表文件

    在实际开发中,经常会遇到导入Excel文件的需求,有的产品人想法更多,想要在前端直接判断文件内容格式是否正确,必填项是否已填写 依据HTML5的FileReader,可以使用新的API打开本地文件(参 ...

  8. matlab 连续读取多个文件

    方法1: 把文件的文件名按一定的规律命名,假如:filename1.txt,filename2.txt,...,fielname100.txt,在读取的时候则可以使用循环: for i = 1:100 ...

  9. 编写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 ...

随机推荐

  1. poj 2531 Network Saboteur 解题报告

    题目链接:http://poj.org/problem?id=2531 题目意思:将 n 个点分成两个部分A和B(也就是两个子集啦), 使得子集和最大(一定很难理解吧,呵呵).举个例子吧,对于样例,最 ...

  2. Healthy Holsteins

    链接 分析:因为数据范围比较小,我们可以通过二进制枚举子集,然后找出所需饲料种数最小的并记录下来,同时记录一下路径,也就是字典序最小的 /* PROB:holstein ID:wanghan LANG ...

  3. Barn Repair

    链接 分析:我们不断统计相邻两个元素之间的差值,按照差值从大到小排序,在进行贪心即可 /* PROB:barn1 ID:wanghan LANG:C++ */ #include "iostr ...

  4. python(二):使用multiprocessing中的常见问题

    简介在python的解释器中,CPython是应用范围最广的一种,其具有丰富的扩展包,方便了开发者的使用.当然CPython也不是完美的,由于全局解释锁(GIL)的存在,python的多线程可以近似看 ...

  5. 【转】构建Maven项目自动下载jar包

    原文地址:https://blog.csdn.net/gfd54gd5f46/article/details/54973954 使用Maven 自动下载jar包 右键单击项目,将项目 转换成Maven ...

  6. 给jenkins设置管理员

    1.点击jenkins web 页的Manage Jenkins,然后点击 Configre Global Security,进行安全配置: 2.启用安全设置,使用Jenkins 自带数据库,只允许登 ...

  7. 移动web开发------公用css----自己总结

    @charset "utf-8"; html, body { background: #fff; color: #505050; font-size: 10px; -moz-use ...

  8. bzoj4566

    后缀自动机+dp 一个串在另一个串上跑. 先对A建出自动机,然后用B在上面跑,记录当前匹配的最大长度,每次经过一个节点记录经过次数,并加上(len-Max(par))*Right,是这个状态对答案的贡 ...

  9. MFC程序中的 _T("") 什么意思?

    _T("")就是把引号内的字符串转换为宽字节的Unicode编码 宽字节就是unicode.

  10. B. Mishka and trip

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...