C#: 将ini文件的内容存储为字符串或字典而不是文件名?
有没有办法将文件的内容作为字符串或字典存储,而不是仅仅是其文件路径/名称? 以下是我当前正在使用的方法来从Windows表单中获取文件路径.有没有办法适应它,还是我应该从头开始?我正在加载.ini文件,这仅是文本. linq 似乎是一条路线,但我不熟悉它. public void ShowSettingsGui() { System.Windows.Forms.OpenFileDialog ofd = new System.Windows.Forms.OpenFileDialog(); ofd.Multiselect = false; ofd.Filter = "Data Sources (*.ini)|*.ini*|All Files|*.*"; if (ofd.ShowDialog() == DialogResult.OK) { string[] filePath = ofd.FileNames; } m
24 2024-04-26
编程技术问答社区
如何解析INI文件?
我有包含服务器数据的INI文件. map.ini [MAP_1] MapType = 1 MapWar = 1 Position = 42.03,738.2,737.3 [MAP_2] MapType = 1 MapWar = 1 Position = 42.03,738.2,737.3 如何读取包含此类文件并将其保存在字典或列表中的map.ini. 解决方案 尝试以下内容: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { const string FILENAME = @"c:\temp\test.txt"; static void Main(string
8 2024-04-26
编程技术问答社区
从文件中访问ini文件进行阅读
我已经在我的C#program上放了一个config ini文件" config.ini",是,如果用户启用了UAC,则出于某些奇怪的原因,该程序不会读或写入或写入文件但设法创建文件,但无法读取或写入. 我该如何工作. 此文件保存到文档文件中\ productName \ config.ini ini class文件: http://www.sinvise.net/so/ini/ini/ini.cs config.ini creation的代码段: 解决方案 快速建议在进一步进行之前,您应该检查示例从INI文件中读取的代码的使用. using Nini; using Nini.Config; namespace niniDemo{ public class niniDemoClass{ public bool LoadIni(){ string configFileName = "demo.ini";
12 2024-04-17
编程技术问答社区
用GetPrivateProfileString读取所有ini文件的值
我需要一种方法来读取StringBuilder变量中的INI文件的所有部分/键: [DllImport("kernel32.dll")] private static extern int GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName); ... private List GetKeys(string iniFile, string category) { StringBuilder returnString = new StringBuilder(255); GetPrivateProfileString(category, null, null, returnString, 32768,
14 2024-04-14
编程技术问答社区
C# Linq .ToDictionary() Key Already Exists
最终编辑:我能够在INI文件中找到重复字段.感谢大家的帮助! 我正在使用正则表达式解析INI文件和Linq将其存储在字典中: 样本数据: [Windowsettings] 窗口x pos ='0' 窗口y pos ='0' 窗口最大化='false' 窗口名称='jabberwocky' [记录] 目录='c:\ rosetta stone \ logs' 编辑:这是文件实际上是引起问题的文件: > edit2:我已经将其范围缩小到文件中的最后一节引起的:[list_first_nonprintable] 由于某种原因,我正在解析的文件之一是抛出此例外: system.argumentException:已经添加了具有相同密钥的项目. 我有什么办法让我找出哪个键引起了问题(我可以修复文件),或者只是跳过引起此问题并继续解析的密钥? 这是代码: try { // Read content of ini file
24 2024-04-13
编程技术问答社区
读/写一个INI文件
.NET框架中是否有可以读取/编写标准文件的类: [Section] = ... delphi具有TIniFile组件,我想知道C#是否有类似的东西? 解决方案 .NET Framework的创建者希望您使用基于XML的配置文件,而不是INI文件.所以不,没有内置机制来读取它们. 不过有第三方解决方案. 可以以 ini parser . 您可以编写自己的INI处理程序,这是老式的,费力的方式.它使您可以更多地控制实现,您可以将其用于糟糕或好处.参见例如使用C#,P/Invoke和Win32. > 其他解决方案 前言 首先,在这是我使用原始Windows P/Invoke编写的简洁实现,因此已安装了.NET的所有版本的Windows(即Windows 98 -Windows 11)都支持它.我在此将其发布到公共领域 - 您可以自由地商业地使用它而无需归因. 小班级 在您的项目中添加一个名为IniFil
16 2024-04-10
编程技术问答社区
c++提升库 | 写入ini文件而不被覆盖?
我试图使用Boost Library的INI解析器和属性树编写INI文件. 该文件分阶段写入 - 我的意思是每个功能都写入其中一部分. 最后,我只剩下最后一个输出,而不是将所有内容写下来. 我在写作时使用的示例代码: property_tree::ptree pt; string juncs=roadID; size_t pos = juncs.find_last_of("j"); string jstart = juncs.substr(0,pos); string jend = juncs.substr(pos,juncs.length()); pt.add(repID + ".startJunction", jstart); pt.add(repID + ".endJunction", jend); write_ini("Report.ini", pt); 如何在不覆盖其余文本?? 的情况下使用write_ini函数 解决方案 只需在步骤中构建ptree,只有
26 2024-04-02
编程技术问答社区
如何使用boost库读写.ini文件
如何使用boost库读取(或修改).INI文件? 解决方案 with Boost.PropertyTree您可以读取并更新树,然后写入文件(请参阅load和save function. 看看树. 您绝对可以添加新属性或更新现有的属性. 它提到容器上也有erase,因此您应该能够删除现有值. boost的示例(上面的链接): ptree pt; pt.put("a.path.to.float.value", 3.14f); // Overwrites the value pt.put("a.path.to.float.value", 2.72f); // Adds a second node with the new value. pt.add("a.path.to.float.value", 3.14f); 我假设您然后将更新的树写入一个文件,无论是新的还是现有的. 编辑: 对于INI文件,它进行了特定的检查. 上面的示例,如果您尝试使用Ini_par
36 2024-04-02
编程技术问答社区
处理INI文件中重复的部分名称
我需要从INI文件加载这些值,然后使用C ++ Boost库在应用程序中打印它们.这些部分具有重复的名称.我仅限于使用C ++升压库. numColors = 4 boardSize = 11 numSnails = 2 [initialization] id = 0 row = 3 col = 4 orientation = 0 [initialization] id = 1 row = 5 col = 0 orientation = 1 [color] id = 0 nextColor = 1 deltaOrientation = +2 [color] id = 1 nextColor = 2 deltaOrientation = +1 [color] id = 2 nextColor = 3 deltaOrientation = -2 [color] id = 3 nextColor = 0 deltaOrientation = -1 解决方案 它不是什么
8 2024-04-02
编程技术问答社区
用boost::property_tree::ptree向ini文件写注释
有什么方法可以使用boost::property::ptree? 在INI文件中编写评论 类似的东西: void save_ini(const std::string& path) { boost::property_tree::ptree pt; int first_value = 1; int second_value = 2; // Write a comment to describe what the first_value is here pt.put("something.first_value", ); // Write a second comment here pt.put("something.second_value", second_value); boost::property_tree::write_ini(path, pt);
12 2024-04-02
编程技术问答社区
如何使用Boost扩展.ini文件中的环境变量
我有一个INI文件,例如 [Section1] Value1 = /home/%USER%/Desktop Value2 = /home/%USER%/%SOME_ENV%/Test 并希望使用Boost对其进行解析.我尝试使用Boost Property_tree boost::property_tree::ptree pt; boost::property_tree::ini_parser::read_ini("config.ini", pt); std::cout ("Section1.Value1") ("Section1.Value2")
12 2024-04-02
编程技术问答社区
如何用Boost解析ini文件
我有一个INI文件,其中包含一些示例值,例如: [Section1] Value1 = 10 Value2 = a_text_string 我正在尝试加载这些值并用Boost将它们打印在我的应用程序中,但我不明白如何在C ++中执行此操作. 我在这个论坛上搜索以找到一些示例(我一直使用C,所以我在C ++中不是很好),但是我只找到了如何一次从文件中读取值的示例. 我只需要在想要的时候加载一个值,例如string = Section1.Value2,因为我不需要阅读所有值,而只是很少. 我想加载单个值并将它们存储在变量中以在我想要在应用程序中使用它们. 可以使用Boost进行此操作? 目前,我正在使用此代码: #include #include #include #include #include #include #includ
12 2024-04-01
编程技术问答社区
跨平台的方式来获取发现给定选项的INI文件的行数
寻找一些C ++库(例如BOOST :: PROGRAM_OPTIONS),可以返回INI文件的行号,其中找到给定选项或部分. 用例: 我要求该库在" [SSS]"部分中找到" VVV"的值.库返回行号,其中" vvv"在" [SSS]"部分中的" VVV",或-1.它使我能够说"第55行:VVV必须为 i ITERATE ini文件for for Section并验证其名称.当发现一些狂野的赛道时,我告诉:"第55行:[hahaha]部分未知". 更新:我知道" Ini比猛mm虫还老",但目前我必须将大型Windows项目移植到跨平台,并且无法尽快摆脱.ini文件. 解决方案 再次借此机会玩了Boost Spirit.这次我必须玩 a>. 这是我劳动的果实: https://gist.github.com/1425972 POSITIONINFO == 0 输入是流媒体 输出是原始字符串(良好,map
18 2024-04-01
编程技术问答社区
用批处理文件搜索和编辑一个文件
我希望能够用批处理文件编辑txt文件.许多事情使这有点复杂. 首先,文件名是frog.properties,并在记事本中打开,但是在计算机上将运行. .properties的文件类型与记事本无关.如果文件需要,它可以使关联建立,但我想避免使用它. 第二,需要编辑的文本是文件中的一行.我们要编辑的行上的前9个字符是该行唯一的,并且在编辑后将保持不变.但是,该线位于文件中的位置以及该线路上的内容在机器上会有所不同.如果需要删除并将其添加到末尾,则可以在文件中移动该行. 到目前为止,我找到了下面列出的代码将来,我希望能够通过更改文件位置和文本来查找和编辑来回收此代码以轻松使用它来编辑任何.Ini或txt文件.由于环境,我将使用它. 谢谢. @echo off setlocal enabledelayedexpansion if not exist "%1" (echo this file does not exist...)&goto :Failed for
8 2024-03-29
编程技术问答社区
批量文件编辑ini文件中的一行
我有一个自动化的INI文件. 其第二行总是: Version = W.XX.Y.ZZ 其中W是主要版本号,XX是次要版本,Y是构建,ZZ是修订版. 我需要打开该INI文件并使用批处理文件编辑该行,以便删除该版本中的构建和修订号.因此,该行应该像这样结束: Version = W.XX 主要数字将始终是一个字符,次要数字将永远是两个字符,因此整个字符串为14个字符(INC Space)长. 我希望我能得到该行的LEFT 14个字符的字符串,然后用该字符串替换该行. 解决方案 您要的"左"语法是使用变量子字符串扩展:%var:~,14% 以下代码将在包含字符串"版本" 的每条行上执行"左14" setlocal enabledelayedexpansion del output.ini for /f "tokens=*" %%a in (input.ini) do ( set var=%%a if not {!var!}=={!var:
12 2024-03-29
编程技术问答社区
解析一个.ini文件
我的问题是关于用Windows命令行解析INI文件. 尝试删除用文件中的所有键删除部分时被卡住.本节的名称已知并保存在变量中. 我试图保存线(启动,结束)以删除两者之间的东西,但对我不起作用. 这里有人可以帮我吗? 编辑: 这是一个示例ini文件: [Example] cycle = value cycle2 = value cycle_bu = value [Example2] key1 = value key2 = value key3 = value key4 = value [something3] key1 = value key2 = value key3 = value key4 = value key5 = value key6 = value 解决方案 = readini_nt 您可以检查这是否可以进行工作? 编辑: 这没有测试: break >new.ini set skip_this_section=[
4 2024-03-29
编程技术问答社区
批量文件:如何只读取INI文件中的部分内容
我是批处理脚本的新手,我正在尝试编写一个简单的脚本以根据批处理文件时通过的参数从INI文件中读取. 这是INI文件的样子的一个示例: [SETTING1] Value1=Key1 Value2=Key2 Value3=Key3 [SETTING2] Value1=Key1 Value2=Key2 Value3=Key3 [SETTING3] Value1=Key1 Value2=Key2 Value3=Key3 仅阅读所谓的部分时,我正在遇到问题.它将从与"值"和"键"匹配的任何部分中读取,我不知道如何限制它以仅读取设置. 使用此参数调用文件:run.bat run.ini设置2.下面我的代码是到目前为止的,我觉得好像我已经正式撞墙了.有人能帮忙吗?任何帮助都将不胜感激. @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET INIFile="%~f1" for /f "usebackq delims=" %
24 2024-03-29
编程技术问答社区
读取.ini文件的Windows批处理脚本
我正在尝试读取以下格式的.ini文件: [SectionName] total=4 [AnotherSectionName] total=7 [OtherSectionName] total=12 基本上,我想从.ini文件中打印出某些值,例如OtherSectionName的总数,然后是AnotherSectionName. 的总数 解决方案 这是一个命令文件(ini.cmd)您可以用来提取相关值: @setlocal enableextensions enabledelayedexpansion @echo off set file=%~1 set area=[%~2] set key=%~3 set currarea= for /f "usebackq delims=" %%a in ("!file!") do ( set ln=%%a if "x!ln:~0,1!"=="x[" ( set currarea=!ln!
24 2024-03-29
编程技术问答社区
如何在shell脚本中抓取一个INI值?
我有一个parameters.ini文件,例如: [parameters.ini] database_user = user database_version = 20110611142248 我想阅读并使用bash shell脚本中的parameters.ini文件中指定的数据库版本,以便我可以对其进行处理. #!/bin/sh # Need to get database version from parameters.ini file to use in script php app/console doctrine:migrations:migrate $DATABASE_VERSION 我该怎么做? 解决方案 如何使用awk 为那条线呢? version=$(awk -F "=" '/database_version/ {print $2}' parameters.ini) 其他解决方案 您可以使用Ba
16 2024-03-27
编程技术问答社区