读取配置文件 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/11973vb.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()中针对你所需要的文件进行 *** 作等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)