其实这个很简单,就是读取一个在用户目录里面的一个Bookmarks文件就好了。

  先建立几个实体类

  

 public class GoogleChrome_bookMark_meta_info
{
public string last_visited_desktop { get; set; }
} public class GoogleChrome_BookMark_children
{
public string date_added { get; set; }
public string id { get; set; }
public GoogleChrome_bookMark_meta_info meta_info { get; set; }
public string name { get; set; }
public string type { get; set; }
public string url { get; set; }
public List<GoogleChrome_BookMark_children> children { get; set; } } public class GoogleChrome_BookMark_bookmark_bar_other_synced
{
public string date_added { get; set; }
public string date_modified { get; set; }
public string id { get; set; }
public string name { get; set; }
public string type { get; set; }
public List<GoogleChrome_BookMark_children> children { get; set; }
} public class GoogleChrome_BookMark_roots
{
public GoogleChrome_BookMark_bookmark_bar_other_synced bookmark_bar { get; set; }
public GoogleChrome_BookMark_bookmark_bar_other_synced other { get; set; }
public GoogleChrome_BookMark_bookmark_bar_other_synced synced { get; set; }
} public class GoogleChrome_BookMarkAllModel
{
public string checksum { get; set; }
public GoogleChrome_BookMark_roots roots { get; set;}
public string version { get; set; }
}

  具体实现

 static void Main(string[] args)
{
///建几个Bookmarks 的实体类(Model)用来承载数据
//获取由指定枚举标识的系统特殊文件夹的路径 ,, 其实就是读取用户目录下的Google Chrome 的Bookmarks 文件。
string ChromeDatePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+@"\Google\Chrome\User Data\Default";
string ChromeBookMarksPath = ChromeDatePath + @"\Bookmarks";
if (File.Exists(ChromeBookMarksPath))
{
Console.WriteLine("Chrome浏览器书签文件存在");
}
else
Console.WriteLine("未找到Chrome浏览器书签");
Console.WriteLine(ChromeBookMarksPath);
StreamReader sr = new StreamReader(ChromeBookMarksPath);
string str = "";
while (!sr.EndOfStream)
{
str += sr.ReadLine();
}
sr.Close();
string str2 = System.Text.RegularExpressions.Regex.Replace(str, "\\s*|\t|\r|\n", ""); //去空格、回车符
Console.WriteLine(str2);
//转为JSON格式
var obj = JsonConvert.DeserializeObject<GoogleChrome_BookMarkAllModel>(str2);
if (obj.roots.bookmark_bar != null)
ShowChildren(, obj.roots.bookmark_bar.children);
Console.ReadKey(); } /// <summary>
/// 输出书签节点
/// </summary>
/// <param name="index">其实是没有用的,为了好看</param>
/// <param name="children">书签集合</param>
public static void ShowChildren(int index, List<GoogleChrome_BookMark_children> children)
{
foreach (var l in children)
{
Console.WriteLine("");
Console.WriteLine(GetTreeStr(index) + "书签ID:" + l.id);
Console.WriteLine(GetTreeStr(index) + "书签名称:" + l.name);
Console.WriteLine(GetTreeStr(index) + "书签类型:" + l.type);
if (l.type == "folder")
{
Console.WriteLine(GetTreeStr(index) + l.name + "是文件夹,文件夹下标签数量为:" + l.children.Where(w => w.type == "url").Count()
+ "文件夹数量为:" + l.children.Where(w => w.type == "folder").Count());
Console.WriteLine(GetTreeStr(index) + l.name + "目录下内容");
}
else
Console.WriteLine(GetTreeStr(index) + "书签url:" + l.url);
}
} /// <summary>
/// 为了好看
/// </summary>
/// <param name="index">随便什么int数</param>
/// <returns></returns>
public static string GetTreeStr(int index)
{
string str = "";
for (int i = ; i < index; i++)
{
str += "...";
}
str += "L";
return str;
}

C# 获取Google Chrome的书签的更多相关文章

  1. google chrome 浏览器书签丢失问题

    在一次新打开标签页时,电脑卡死,强制重启后打开google chrome 浏览器,发现历史什么的都在,但书签栏全部丢失了 找到 系统盘:\Users\用户名\AppData\Local\Google\ ...

  2. 一个获取google chrome扩展crx文件信息的PHP操作类

    此类中实现了从crx文件获取扩展的Appid.获取manifest.json文件内容.将crx文件转换为一般zip文件 代码如下: <?php class CrxParserException ...

  3. [C#]Google Chrome 书签导出并生成 MHTML 文件

    目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...

  4. Google Chrome 书签导出并生成 MHTML 文件

    目的 因为某些原因需要将存放在 Google Chrome 内的书签导出到本地,所幸 Google Chrome 提供了导出书签的功能. 分析 首先在 Google Chrome 浏览器当中输入 ch ...

  5. google chrome 删除重复的书签 about sync

    之前 由于 谷歌 同步的不智能,且不询问用户同步方法和细节,导致我的书签包括了大量重复的书签,想去除重复的书签. 由于谷歌书签文件 存储在:C:\Documents and Settings\Admi ...

  6. 15个你不知道的杀手级Google Chrome功能

    之前写过一篇我为什么使用Google Chrome浏览器,算是在使用了一段时间的Google Chrome后的一点粗浅认识,最近读到一篇文章15 Killer Google Chrome Featur ...

  7. 浅谈Google Chrome浏览器(理论篇)

    注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...

  8. 详解google Chrome浏览器(理论篇)

    注解:各位读者,经博客园工作人员反馈,hosts涉及违规问题,我暂时屏蔽了最新hosts,若已经获取最新hosts的朋友们,注意保密,不要外传.给大家带来麻烦,对此非常抱歉!!! 开篇概述 1.详解g ...

  9. Google Chrome 浏览器的备用(离线)安装程序

    Google Chrome 浏览器的备用(离线)安装程序(适用于 Windows) 如果您在使用 http://www.google.com/chrome 上的标准安装程序下载 Chrome 浏览器时 ...

随机推荐

  1. day5字典作业详解

    1.day5题目 1.有如下变量(tu是个元祖),请实现要求的功能 tu = ("alex", [11, 22, {"k1": 'v1', "k2&q ...

  2. Luogu P2257 YY的GCD 莫比乌斯反演

    第一道莫比乌斯反演...$qwq$ 设$f(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]$ $F(n)=\sum_{n|d}f(d)=\lfloor \frac{N ...

  3. Ubuntu 16.04 LTS安装Docker

    一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...

  4. 基于.NetCore2.1。服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务

    基于.NetCore2.1.服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务 https://www.cnblogs.com/ibeisha/p/weixinServ ...

  5. .NET Core中Circuit Breaker

    谈谈Circuit Breaker在.NET Core中的简单应用 前言 由于微服务的盛行,不少公司都将原来细粒度比较大的服务拆分成多个小的服务,让每个小服务做好自己的事即可. 经过拆分之后,就避免不 ...

  6. Ubuntu新服务器安装lnmp

    版本: nginx(无要求,最新) mysql(5.6.xx) php(5.6.xx) ubuntu(16.04,其他版本也并无过多差异) 准备: #apt-get update #apt-get i ...

  7. HDU 1029 一道微软面试题

    http://acm.hdu.edu.cn/showproblem.php?pid=1029 给定一个数组,其中有一个相同的数字是出现了大于等于(n + 1) / 2次的.要求找出来. 1.明显排序后 ...

  8. MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行

    上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序! 1. 在Eclipse环境下运行MapR ...

  9. 【转载】Ubuntu16.04安装最新版nodejs

    安装最新版nodejs 更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties softw ...

  10. 下一代的前端构建工具:parcel打包react

    1. parcel很受欢迎,webpack太慢了,试试Parcel下一代的前端构建工具 2.Parcel很快,但缺少好多插件,没有base64,没有办法拆分打包文件.... 3.总结:适合小项目 4. ...