代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
实现文件存储配置信息
作者:
dezai
/ 发布于
2014/6/25
/
460
/接口ISettingProvider using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SettingProvider1 { public interface ISettingProvider { string this[string name] { get; set; } string[] Names { get; } bool NameExists(string name); } } //实现接口ISettingProvider的类FileSettingsProvider using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.IO; using System.Reflection; namespace SettingProvider1 { public class FileSettingsProvider:ISettingProvider { string filename = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); //当前程序路径 // private string filename = "c:/myconfig.txt"; public FileSettingsProvider()d { filename = Path.Combine(filename, "myconfig.txt");//文件名 if (!File.Exists(filename)) { using(File.Create(filename))//创建完成后立即释放资源,否则会占用、报错 { } } } public string this[string name] { get { string[] lines = File.ReadAllLines(filename, Encoding.UTF8); foreach (string line in lines) { var match = Regex.Match(line, @"(\w+)=(\w+)"); string lineName = match.Groups[1].Value; string lineValue = match.Groups[2].Value; if (lineName == name) { return lineValue; } } throw new Exception("没找到!"); } set { string[] lines = File.ReadAllLines(filename, Encoding.UTF8); for (int i = 0; i < lines.Length; i++) { string line = lines[i]; var match = Regex.Match(line, @"(\w+)=(\w+)"); string lineName = match.Groups[1].Value; string lineValue = match.Groups[2].Value; //逐行找,如果遇到名字等于name的就把这一行的值修改 //然后写回文件 if (lineName == name) { lines[i] = lineName + "=" + value; File.WriteAllLines(filename, lines); return; } } //如果执行到这里,说明没有在旧文件中找到 //则将配置的值附加入文件 File.AppendAllText(filename,name + "=" + value + "\r\n"); } } public string[] Names { get { List<string> listName = new List<string>(); string[] lines = File.ReadAllLines(filename, Encoding.UTF8); foreach (string line in lines) { var match = Regex.Match(line, @"(\w+)=(\w+)"); string lineName = match.Groups[1].Value; listName.Add(lineName); } return listName.ToArray(); } } public bool NameExists(string name) { return Names.Contains(name); } } } ////测试用例 ISettingProvider sp = new FileSettingsProvider(); sp = new DESSettingsProvider(sp); if (sp.NameExists("用户名")) { string v1 = sp["用户名"]; Console.WriteLine(v1); } sp["用户名"] = "2cfc"; sp["密码"] = "4zxv"; sp["年龄"] = "9czc"; foreach (string name in sp.Names) { Console.WriteLine(name); } Console.ReadKey(); ////拓展加密解密功能 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SettingProvider1 { public class DESSettingsProvider:ISettingProvider { private ISettingProvider provider; public DESSettingsProvider(ISettingProvider provider)//可以传入实现接口的任一对象 { this.provider = provider; } public string this[string name] { get { string s = DES.DESDecrypt(provider[name]);//自定义的解密功能 // s = provider[name]; return s; } set { string s = DES.DESEncrypt(value);// 自定义的加密功能 // s = value; provider[name] =s; } } public string[] Names { get { return provider.Names; } } public bool NameExists(string name) { return provider.NameExists(name); } } }
试试其它关键字
文件存储
配置信息
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
dezai
贡献的其它代码
(
1065
)
.
双色球
.
列出所有物理网络适配器
.
快乐数的 Python 实现
.
计算当月还剩天数
.
猜属相
.
二十四小时时钟
.
每日一语
.
很酷的日历
.
超长日历表单
.
最简单的时钟
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3