NET Framework 类库未提供读写ini文件的相应类 不过可以使用WinAPI来处理INI文件的读写 代码很简单 如下
首先有两个API函数需放在你的class中且只能如此 放在method或(class外namespace内) 都会出现编译错误
using System Runtime InteropServices;
[DllImport( kernel )]
private static extern long WritePrivateProfileString(string section string key string val string filePath);
[DllImport( kernel )]
private static extern long GetPrivateProfileString(string section string key string def StringBuilder retVal int size string filePath);
WritePrivateProfileString方法说明
功能 将信息写入ini文件
返回值 long 如果为 则表示写入失败 反之成功
参数 (section):写入ini文件的某个小节名称(不区分大小写)
参数 (key):上面section下某个项的键名(不区分大小写)
参数 (val):上面key对应的value
参数 (filePath):ini的文件名 包括其路径(example: c:\config ini ) 如果没有指定路径 仅有文件名 系统会自动在windows目录中查找是否有对应的ini文件 如果没有则会自动在当前应用程序运行的根目录下创建ini文件
ini文件结构Example
[JXCDB] 小节名(section)
server= server是JXCDB下的某个键 是server键的值(下同)
name=sa
pwd=
dbName=JXC
GetPrivateProfileString方法使用说明
功能 从ini文件中读取相应信息
返回值 返回所取信息字符串的字节长度
参数 (section):某个小节名(不区分大小写) 如果为空 则将在retVal内装载这个ini文件的所有小节列表
参数 (key):欲获取信息的某个键名(不区分大小写) 如果为空 则将在retVal内装载指定小节下的所有键列表
参数 (def):当指定信息 未找到时 则返回def 可以为空
参数 (retVal):一个字串缓冲区 所要获取的字符串将被保存在其中 其缓冲区大小至少为size
参数 (size):retVal的缓冲区大小(最大字符数量)
参数 (filePath):指定的ini文件路径 如果没有路径 则在windows目录下查找 如果还是没有则在应用程序目录下查找 再没有 就只能返回def了
详细使用Example
首先先创建一个ini文件 并保存信息
WritePrivateProfileString( JXCDB server Application StartupPath + \\JXC_Server ini );
WritePrivateProfileString( JXCDB name txtName Text Trim() Application StartupPath + \\JXC_Server ini );
WritePrivateProfileString( JXCDB pwd txtPwd Text Trim() Application StartupPath + \\JXC_Server ini );
WritePrivateProfileString( JXCDB DBName JXC Application StartupPath + \\JXC_Server ini );
说明 Application StartupPath获取当前项目编译出的exe文件的绝对路径(不包含exe文件的文件名)
读取ini文件
StringBuilder stringBud = new StringBuilder( );
GetPrivateProfileString( JXCDB server 还未设置服务器IP stringBud Application StartupPath + \\JXC_Server ini );
此时所读取的server键对应的值已被保存在stringBud中 只需:
return stringBud ToString();
lishixinzhi/Article/program/net/201311/13445
// 读取一般的属性文件
FileInputStream fin=new FileInputStream("myini"); // 打开文件
Properties props=new Properties(); // 建立属性类
propsload(fin); // 读入文件
finclose(); // 关闭文件
dim read,str,file
file="c:\cini" '文件完整路径
set open=createobject("scriptingfilesystemobject")
set shell=createobject("WscriptShell")
read=openopentextfile(file)readall
for each i in split(read,vbcrlf)
if instr(i,"s1=")>0 then str=split(i,"s1=")(1)
next
shellrun "aexe /a /n " & str
'保存为vbs类型文件
确定你的INI文件可以被访问到吗如果程序确实找到了INI文件的话,那就是你这个INI文件对应的Section和Key下面是空的(没有值)。请为你的INI文件加入相应的Section和Key再试试看。
GetPrivateProfileString(Section, Key, "读取错误", temp, 255, inipath); 表示如果读取INI文件失败(为空)就返回"读取错误"。
一个关键命令-----取配置节名()
版本 2
支持库 spec
子程序 _按钮1_被单击
局部变量 所有节名数组, 文本型, , "0", 此数组存储的就是配置文件内所有的节
局部变量 i, 整数型
所有节名数组 = 取配置节名 (“D:\1ini”) ' 根据自己的需要自己更改路径,
调试输出 (所有节名数组)
你是想从指定路径中取文件名呢,还是想寻找硬盘里的ini文件呢?
我是初学者,寻找硬盘文件我不会哦!
下面是可以根据文件路径字符串取出文件名
如:E:\Visual Studio\configini,取文件名结果是:configini
取目录名结果是:E:\Visual Studio\
public static string GetFilePath(string path) {//取目录名
int i = pathLastIndexOf("\\") + 1;
return pathSubstring(0, i);
}//取目录名
public static string GetFileName(string path) {
//取文件名
int i = pathLastIndexOf("\\") + 1;
return pathSubstring(i, pathLength - i);
}//取文件名
和DLL没有关系,你编译DLL的代码里面读取ini就好了
var
ini_path,ini_filename:string;
ini_file:Tinifile;
begin
ini_path:=extractfilepath(applicationExeName); //路径
ini_filename:=ini_path+'xxxini';//路径+文件民称
ini_file:=TinifileCreate(ini_filename);
//写入
ini_filewritestring('节点','关键字',变量或字符串值);
ini_filewriteinteger('节点','关键字',变量或整型值);
ini_filewritebool('节点','关键字',变量或True或False);
// 读取
ini_fileReadstring('节点','关键字',缺省值);
//删除关键字
ini_fileDeleteKey('节点','关键字');//关键字删除
ini_fileEraseSection('节点');// 节点删除
//节点 *** 作:
inifilereadsection('节点',TStrings变量);
//可将指定小节中的所有关键字名读取至一个字符串列表变量中;
inifilereadsections(TStrings变量);//可将INI文件中所有小节名读取至一个字符串列表变量中去。
inifilereadsectionvalues('节点',TStrings变量);
//可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。
//释放
inifiledistory;或inifilefree;
end;
以上就是关于C#读写ini配置文件全部的内容,包括:C#读写ini配置文件、Java中如何设置读取ini配置文件、批处理读取ini文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)