新闻详情

新闻详情

首页 / 资讯中心 / 详情

ini文件读取,EXE同目录文件读取

发布时间:2026/8/31 20:52:03来源:尧图网络
ini文件读取,EXE同目录文件读取
好的以下是使用C#实现的方案同样遵循“获取EXE自身目录 → 拼接INI文件名”的核心思路无需区分EXE在文件夹还是根目录。核心方法使用Application.StartupPath或Assembly.GetExecutingAssembly().Location获取EXE所在目录然后与INI文件名拼接。方案一使用Application.StartupPathWinForms / WPF 推荐using System; using System.IO; using System.Windows.Forms; // 需要添加System.Windows.Forms引用 public static class IniHelper { public static string GetIniFilePath(string iniFileName) { // Application.StartupPath 返回EXE所在目录不含末尾反斜杠 string exeDir Application.StartupPath; // 拼接INI文件完整路径 return Path.Combine(exeDir, iniFileName); } } // 使用示例 class Program { static void Main() { string iniPath IniHelper.GetIniFilePath(config.ini); Console.WriteLine($INI文件路径: {iniPath}); // 输出示例 // EXE在 C:\MyApp\app.exe → C:\MyApp\config.ini // EXE在 D:\app.exe → D:\config.ini } }方案二使用Assembly.GetExecutingAssembly()控制台/类库通用using System; using System.IO; using System.Reflection; public static class IniHelper { public static string GetIniFilePath(string iniFileName) { // 获取当前EXE的完整路径 string exeFullPath Assembly.GetExecutingAssembly().Location; // 提取目录部分 string exeDir Path.GetDirectoryName(exeFullPath); // 拼接INI文件完整路径 return Path.Combine(exeDir, iniFileName); } } // 使用示例 class Program { static void Main() { string iniPath IniHelper.GetIniFilePath(config.ini); Console.WriteLine($INI文件路径: {iniPath}); // 输出示例同上 } }方案三使用Environment.ProcessPath.NET 6 推荐using System; using System.IO; public static class IniHelper { public static string GetIniFilePath(string iniFileName) { // .NET 6 提供的简洁API string exePath Environment.ProcessPath; string exeDir Path.GetDirectoryName(exePath); return Path.Combine(exeDir, iniFileName); } }三种方案的对比方案适用场景优点缺点Application.StartupPathWinForms / WPF最简洁自动处理路径格式需要引用System.Windows.FormsAssembly.GetExecutingAssembly()所有.NET项目纯.NET标准不依赖UI框架稍多一行代码Environment.ProcessPath.NET 6官方推荐现代简洁不支持旧版.NET Framework为什么不建议用Directory.GetCurrentDirectory()// ❌ 错误做法 string iniPath Path.Combine(Directory.GetCurrentDirectory(), config.ini);原因当前工作目录可以被外部修改如通过快捷方式启动时指定了不同的起始位置无法保证始终等于EXE所在目录完整的INI读写示例使用kernel32.dll如果需要实际读写INI文件内容可以借助 Windows APIusing System; using System.IO; using System.Runtime.InteropServices; using System.Text; public class IniFile { private string filePath; [DllImport(kernel32, CharSet CharSet.Unicode)] private static extern int GetPrivateProfileString( string section, string key, string def, StringBuilder retVal, int size, string filePath); [DllImport(kernel32, CharSet CharSet.Unicode)] private static extern bool WritePrivateProfileString( string section, string key, string value, string filePath); public IniFile(string iniFileName) { // 关键使用EXE目录拼接路径 string exeDir AppDomain.CurrentDomain.BaseDirectory; this.filePath Path.Combine(exeDir, iniFileName); } public string Read(string section, string key, string defaultValue ) { var sb new StringBuilder(255); GetPrivateProfileString(section, key, defaultValue, sb, 255, filePath); return sb.ToString(); } public void Write(string section, string key, string value) { WritePrivateProfileString(section, key, value, filePath); } } // 使用示例 class Program { static void Main() { var config new IniFile(settings.ini); // 写入 config.Write(Database, Server, localhost); config.Write(Database, Port, 3306); // 读取 string server config.Read(Database, Server); Console.WriteLine($服务器地址: {server}); } }总结无论EXE在文件夹内还是盘符根目录C#中统一使用Application.StartupPath、Assembly.GetExecutingAssembly().Location或Environment.ProcessPath获取EXE所在目录再用Path.Combine拼接INI文件名即可。无需编写任何条件分支来判断目录层级。提示词如下。使用ini文件存储配置信息在读取ini文件在EXE所在同级目录时如何区分处理EXE在文件夹内和EXE在盘符根目录使用C#实现。特此记录anlog2026.8.30
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI全栈开发实战:Java+Vue3+大模型打造旅游推荐助手 2026/8/31 21:37:25

AI全栈开发实战:Java+Vue3+大模型打造旅游推荐助手

今年聊“AI全栈”的人很多,但多数人只是停留在“会用 AI 生成代码”的层面。真正值得关注的变化是:AI 能力正在变成业务系统的标准模块,而不再只是开发者的辅助工具。如果你一直做 Java、Spring Boot 或者 Vue3 这类前后端开发,会…

阅读更多 →
Matlab连杆机构运动学仿真:从曲柄滑块到四杆机构实践 2026/8/31 21:37:25

Matlab连杆机构运动学仿真:从曲柄滑块到四杆机构实践

Matlab 做机械连杆机构运动学仿真,最核心的不是把动画画得多漂亮,而是先把机构的位移、速度、加速度算对。四杆机构、五杆机构、六杆机构、曲柄滑块、曲柄连杆,这些名字看着不同,本质上都是在求解一组几何约束方程;gif…

阅读更多 →
Java+大模型:2026年面试必备的复合技能与实战指南 2026/8/31 21:37:25

Java+大模型:2026年面试必备的复合技能与实战指南

最近不少准备冲击 2026 年金九银十的 Java 同学都在纠结一个问题:过去那套“八股文 刷题 背项目”的复习套路,好像越来越不够用了。面试官开始追问大模型怎么接入业务、RAG 的检索链路怎么设计、Agent 的工具调用怎么保证稳定。但真要系统去学大模型&a…

阅读更多 →
VMware Workstation 虚拟机安装指南:从BIOS设置到系统安装与排错 2026/8/31 21:37:25

VMware Workstation 虚拟机安装指南:从BIOS设置到系统安装与排错

虚拟机是很多人在一台电脑上同时运行多个系统时最常用的方案,VMware Workstation 则是这类工具里最常见的一款。不管是装 Windows 11、Ubuntu,还是国产的统信 UOS,只要 ISO 镜像正常、硬件虚拟化打开、步骤不出错,基本都能在一台普…

阅读更多 →
STM32H7 CSI调不通?手册与HAL库DLD位矛盾排查实录 2026/8/31 21:37:25

STM32H7 CSI调不通?手册与HAL库DLD位矛盾排查实录

我最近在调一块基于STM32H743的摄像头采集板卡,用的是芯片自带的CSI接口,接的是一颗MIPI输出的传感器。初始化代码跑完,我读CSI状态寄存器,发现它一直报“无信号”。用调试器直接看CSI_PFCR寄存器,发现DLD位是1&#x…

阅读更多 →
Hypermesh固定边界条件设置详解:自由度、网格质量与求解器 2026/8/31 21:34:24

Hypermesh固定边界条件设置详解:自由度、网格质量与求解器

1. 固定边界条件到底在约束什么?先想清楚自由度 很多人第一次在 Hypermesh 里做固定边界条件时,会直接选择若干个节点,然后点击 “create”,看到模型上出现一组约束符号,就以为任务完成了。等模型提交到求解器一算&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞