.net Framework提供配置文件 *** 作

.net Framework提供配置文件 *** 作,第1张

namespace System Configuration 创建配置节类 必须创建继承自ConfigurationSection的对象才能进行配置数据读写 *** 作 ConfigurationSection提供了索引器用来获取和设置配置数据 需要注意的是拥有ConfigurationProperty特性的属性才会被存储 并且名称要保持大小写完全一致 如下面的代码中 所有的 id 必须保持一样 class ConfigSectionData : ConfigurationSection{  [ConfigurationProperty( id )]  public int Id  {    get { return (int)this[ id ]}    set { this[ id ] = value}  }  [ConfigurationProperty( time )]  public DateTime Time  {    get { return (DateTime)this[ time ]}    set { this[ time ] = value}  }} 创建配置文件 *** 作对象 Configuration config = ConfigurationManager OpenExeConfiguration(ConfigurationUserLevel None)ConfigSectionData data = new ConfigSectionData()data Id = data Time = DateTime Nowconfig Sections Add( add data)config Save(ConfigurationSaveMode Minimal)上面的例子是 *** 作 nfig 在根节点(configuration)下写入名称为 add 的配置数据               

          读取配置文件 ExeConfigurationFileMap file = new ExeConfigurationFileMap()file ExeConfigFilename = nfig Configuration config = ConfigurationManager OpenMappedExeConfiguration(file ConfigurationUserLevel None)ConfigSectionData data = config SectionGroups[ group ] Sections[ add ] as ConfigSectionData//ConfigSectionData data = config Sections[ add ] as ConfigSectionData// 从根节读取if (data != null){  Console WriteLine(data Id)  Console WriteLine(data Time)}

写配置文件 在写入 ConfigurationSectionGroup 和 ConfigurationSection 前要判断同名配置是否已经存在 否则会写入失败 另外如果配置文件被其他Configuration对象修改 则保存会失败 并抛出异常 建议采用Singleton模式

ExeConfigurationFileMap file = new ExeConfigurationFileMap()file ExeConfigFilename = nfig Configuration config = ConfigurationManager OpenMappedExeConfiguration(file ConfigurationUserLevel None)ConfigSectionData data = new ConfigSectionData()data Id = data Time = DateTime NowConfigurationSectionGroup group = config SectionGroups[ group ]if (group == null)   config SectionGroups Add( group new ConfigurationSectionGroup())ConfigurationSection data = group Sections[ add ] as configif (add == null)  config SectionGroups[ group ] Sections Add( add data)else{  group Sections Remove( add )  group Sections Add( add data)  // 或者直接修改原配置对象 前提是类型转换要成功   //ConfigSectionData configData = add as ConfigSectionData  //configData Id = data Id  //configData Time = data Time}config Save(ConfigurationSaveMode Minimal) 删除配置节 删除ConfigurationSectionGroup config SectionGroups Remove( group )//config SectionGroups Clear()config Save(ConfigurationSaveMode Minimal)删除ConfigurationSection config Sections Remove( add )//config Sections Clear()if (config SectionGroups[ group ] != null){  config SectionGroups[ group ] Sections Remove( add )  //config SectionGroups[ group ] Sections Clear()}config Save(ConfigurationSaveMode Minimal) 其他 可以使用 ConfigurationManager OpenMachineConfiguration() 来 *** 作 nfig 文件 或者使用 System Web Configuration 名字空间中的 WebConfigurationManager 类来 *** 作 配置文件 ConfigurationManager还提供了AppSettings ConnectionStrings GetSection()等便捷 *** 作 使用自定义类 补充 回复 ggy 网友的疑问 引用至 ggy 比如ConfigSectionData里面除了简单类型之外 可不可以有自定义的类可以使用自定义类 不过需要定义一个转换器 using Systemusing System Collectionsusing System Collections Genericusing System Configurationusing System Globalizationusing System ComponentModel// 要写入配置文件的自定义类class CustomData{  public CustomData(string s)  {    this s = s  }  private string s  public string S  {    get { return s}    set { s = value}  }}// 自定义的转换器(演示代码省略了类型判断)class CustomConvert : ConfigurationConverterBase{  public override bool CanConvertFrom(ITypeDescriptorContext ctx Type type)  {    return (type == typeof(string))  }  public override object ConvertTo(ITypeDescriptorContext ctx CultureInfo ci object value Type type)  {    return (value as CustomData) S  }  public override object ConvertFrom(ITypeDescriptorContext ctx CultureInfo ci object data)  {    return new CustomData((string)data)  }}class ConfigSectionData : ConfigurationSection{  [ConfigurationProperty( id )]  public int Id  {    get { return (int)this[ id ]}    set { this[ id ] = value}  }  [ConfigurationProperty( time )]  public DateTime Time  {    get { return (DateTime)this[ time ]}    set { this[ time ] = value}  }  [ConfigurationProperty( custom )]  [TypeConverter(typeof(CustomConvert))] // 指定转换器  public CustomData Custom  {    get { return (CustomData)this[ custom ]}    set { this[ custom ] = value}  }}  public class Program{  static void Main(string[] args)  {    Configuration config = ConfigurationManager OpenExeConfiguration(ConfigurationUserLevel None)    ConfigSectionData data = new ConfigSectionData()    data Id =     data Time = DateTime Now    data Custom = new CustomData( abcdefg )    config Sections Add( add data)    config Save(ConfigurationSaveMode Minimal)    // 读取测试    ConfigSectionData configData = (ConfigSectionData)config Sections[ add ]    Console WriteLine(configData Custom S)  }}保存后的配置文件             更详细的信息可以看 MSDN 中关于 System Configuration ConfigurationConverterBase 的说明 lishixinzhi/Article/program/net/201311/12863

工作需要 我需要使用对文本文件进行读写 *** 作 编程需要完成如下工作

把程序执行错误追加到错误日志中

使巧巧读书网的编辑能够读取错误日志

记得以前使用vb 的时候 对文本文件的 *** 作挺麻烦的 特别是在写文件的时候 需要区分什么顺序文件 随机文件 很教材都专门针对文本文件的读写开辟了一个章节来讲解 够麻烦的了 现在使用 net读写文本文件 因为时间仓促 没来得及细看MSDN 同时受到 的思路影响 把问题复杂化了 在追加记录到文本文件尾部的时候就写不下去了 后来仔细看了一下MSDN中例子 问题终于得到了解决

好了下面进入正题 分别把中对文本文件进行读和写的通用 *** 作做个示例 免得后来新手多走弯路

我们这里是对文件流进行 *** 作 所以模块前面要加上

Imports System IO

写 *** 作

使用System IO的StreamWriter 下面是代码

Dim strFilePath As String = SaveFileDialog FileName

Dim sw As StreamWriter = New StreamWriter(strFilePath True) true是指以追加的方式打开指定文件

For i = To j

temp = i ToString

sw WriteLine(temp)

sw Flush()

Next

sw Close()

sw = Nothing

首先要说明的是构造函数new

Public Sub New(path append Encoding)

path 要打开文件的完整路径 如果文件不存在则自动建立一个新的文件

append 缺省值为false 指示是否以追加方式打开指定文件 false——如果存在path指定的文件 则覆盖原文件 否则建立一个新文件 true——如果存在path指定的文件 则打开该文件 以追加数据的方式在文尾写数据 否则建立一个新文件

Encoding 缺省值为System Text Encoding Default 即使用系统缺省的编码 指示以什么样的编码写文件

WriterLine(str) 在文本中添加一个新行 同时在行尾加上回车换行符

读 *** 作

Dim line As String

Dim sr As StreamReader = New StreamReader(strPath System Text Encoding Default)

Do While sr Peek() >

line = sr ReadLine()

Loop

sr Close()

sr = Nothing

构造函数new

Public Sub New(Path Encoding)

path 要打开文件的完整路径 如果文件抛出一个错误

Encoding 缺省值为System Text Encoding Default 即使用系统缺省的编码 指示以什么样的编码读文件

lishixinzhi/Article/program/net/201311/11973

vb.net使用控件FolderBrowserDialog1,在程序中:

'设置对话框中在树视图控件上显示的说明文本

Me.FolderBrowserDialog1.Description

=

"请选择输出报表所在路径:"

'设置从其开始浏览的根文件夹

Me.FolderBrowserDialog1.SelectedPath

=

"c:\"

If

Me.FolderBrowserDialog1.ShowDialog()

=

DialogResult.OK

Then

'取得全路径(包含文件名)

reportPath1

=

System.IO.Path.GetFullPath(Me.FolderBrowserDialog1.SelectedPath)

'设定text显示文件名

txtReport1.Text

=

reportPath1

setReportList()

End

If

在setReportList()中针对你所需要的文件进行 *** 作等


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11861112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存