using System.IO;
static void Main()
{
string iniFilePath = SelectPath("ini");
Process.Start(iniFilePath);
OpenIni(iniFilePath);
}
/// <summary>
/// 打开并获取FilePath
/// </summary>
/// <param name="tempType">文件类型</param>
/// <returns>FilePath</returns>
public static string SelectPath(string tempType)
{
string filePath = string.Empty;
if (tempType == "txt")
{
OpenFileDialog openFileDialog = new OpenFileDialog()
{
Filter = "Files (*.txt)|*.txt"//如果需要筛选csv文件 "Files (*.csv)|*.csv" "Files (*.txt)|*.txt"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
}
}
else if (tempType == "csv")
{
OpenFileDialog openFileDialog = new OpenFileDialog()
{
Filter = "Files (*.csv)|*.csv"//如果需要筛选csv文件 "Files (*.csv)|*.csv" "Files (*.txt)|*.txt"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
}
}
else if (tempType == "ini")
{
OpenFileDialog openFileDialog = new OpenFileDialog()
{
Filter = "Files (*.ini)|*.ini"//如果需要筛选csv文件 "Files (*.csv)|*.csv" "Files (*.txt)|*.txt"
};
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
}
}
return filePath;
}
/// <summary>
/// 获取iniData
/// </summary>
/// <param name="filePath"></param>
/// <returns>iniData</returns>
public static Dictionary<string, string> OpenIni(string filePath)
{
// 读取INI文件
string iniFilePath = filePath;
Dictionary<string, string> iniData = new Dictionary<string, string>();
if (File.Exists(iniFilePath))
{
using (var reader = new StreamReader(iniFilePath))
{
string line;
string currentSection = string.Empty;
while ((line = reader.ReadLine()) != null)
{
line = line.Trim();
if (line.StartsWith(";") || line.StartsWith("#"))
{
// 注释行,忽略
continue;
}
else if (line.StartsWith("[") && line.EndsWith("]"))
{
// 区段行
currentSection = line.Substring(1, line.Length - 2);
}
else if (!string.IsNullOrEmpty(line) && line.Contains("="))
{
// 键值行
string[] parts = line.Split(new char[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length == 2)
{
string key = parts[0].Trim();
string value = parts[1].Trim();
int index = value.IndexOf(';');
if (index != -1)
value = value.Substring(0, index);
else
Console.WriteLine("ini format error");
value = value.Replace(" ", "");// 删除空格
string sectionKey = currentSection + "|" + key;
if (!iniData.ContainsKey(sectionKey))
{
iniData.Add(sectionKey, value);
}
else
{
// 如果有重复的键名称,则覆盖现有的值
iniData[sectionKey] = value;
}
}
}
}
}
}
return iniData;
}