读取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 ...
随机推荐
- 使用cocoaPods加载框架的具体步骤:
注意事项: 1.使用之前备份一下代码.因为pod更新很快,如果某个文件名有中文,pod install 一下.整个项目可能就要废掉了. 2.如果不把pod文件推动到远程服务器. 每一次用的时候在本地p ...
- Windows 上 GitHub Desktop 的操作
目 录 第1章 上传开源代码至GitHub 1 1.1 git Windows 客户端 1 1.2 注册GitHub账户 2 1.3 登录 2 1.4 创建本地代码仓库 ...
- OpenMediaVault GitLab 安装
/**************************************************************************** * OpenMediaVault GitLa ...
- POJ2976:Dropping tests(01分数规划入门)
In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cum ...
- springboot读写分离--temp
我最初的想法是: 读方法走读库,写方法走写库(一般是主库),保证在Spring提交事务之前确定数据源. 保证在Spring提交事务之前确定数据源,这个简单,利用AOP写个切换数据源的切面,让他的优先级 ...
- 杂项-公司:Aspose
ylbtech-杂项-公司:Aspose Aspose 于2002年3月在澳大利亚悉尼创建,旗下产品覆盖文档.图表.PDF.条码.OCR.CAD.HTML.电子邮件等各个文档管理领域,为全球.NET ...
- HTML <legend> 标签
转自:https://www.w3cschool.cn/htmltags/tag-legend.html <!DOCTYPE HTML> <html> <body> ...
- NYOJ8——一种排序
一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述:现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数: ...
- (水题)Codeforces - 630H - Benches
https://codeforces.com/problemset/problem/630/H 又一个组合数学的问题,我们先考虑在 $n$ 列中选出 $5$ 列来放椅子,然后对第一列有 $n$ 种放法 ...
- HDOJ1864(水的可怜)
注意这句话:精确到小数点后两位如果是小数点的话 HDOJ1864 #include<stdio.h> #include<iostream> #include<algori ...