[发布] OpenSource INI格式读/写类

塞卡

新成员
已加入
2011年6月25日
留言内容
2
编程经验
Beginner
我想分享一个我昨天从事的小项目,希望它将被使用。
我将在这里解释基本功能。 :)

<<==使用INI格式文件的设置==>>


C#:
// Where the other usings are.
using iniControll;

// Creating a new instance of the INI Class
INI myIni = new INI("location to file here"); // Warning: Exceptions are not handled so, you're gonna have to check for your self.

<<==使用INI.ReadKey ==>>

假设这是我们拥有的文件。我们想从“ key2”中读取
C#:
key1 = hello
key2 = there
keyseven = whatever

C#:
// Use the code from the previous tutorial to already create an instance of the INI class
myIni.ReadKey("key2");
//Example of using the output :
//Console.WriteLine(myIni.ReadKey("key2"));

<<==使用INI.WriteKey ==>>

注意:请阅读此线程的INI.ReadKey部分,否则您将不知道某些事物来自^^。
C#:
// Now, WriteKey will Replace a existing key if it already exists. Lets say we want to: Create a new key: key6 and change keyseven's value
myIni.WriteKey("keyseven","its7");
myIni.WriteKey("key6"."its6");

玩得开心! ^^

只需创建一个新的Project并添加一个类,删除其所有默认inert并复制并粘贴即可;然后编译它并在您的项目中使用它^^!

C#:
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace iniControll
{
    public class INI
    {
        static string file;
        static string line;
        System.IO.StreamReader filez;

        public INI(string _file)
        {
            filez =  new System.IO.StreamReader(_file);
            filez.Close();
            file = _file;
        }
        public string ReadKey(string key)
        {
            filez = new System.IO.StreamReader(file);
            string result = null;
            
            while ((line = filez.ReadLine()) != null)
            {
                if (line.StartsWith(key) & (line[key.Length] == ' ' | line[key.Length] == '='))
                    {
                        int stage = 0;
                        
                        for (int i = key.Length; i<line.Length; i++)
                        {

                            if (line[i] == ' ') continue;
                            else if (line[i] == '=')  stage = 1;
                            else if (stage == 1)
                            {
                                result += line[i];
                            }
                        }
                    }
            
            }
            filez.Close();
            if (result == string.Empty) result = "";
            return result;

        }
        public void WriteKey(string key, string value)
        {
            System.IO.StreamWriter s = new System.IO.StreamWriter(file + ".wr");
            s.AutoFlush = true;


            filez = new System.IO.StreamReader(file);
            int b = 0;
            while ((line = filez.ReadLine()) != null)
            {
                if (line.StartsWith(key) & (line[key.Length] == ' ' | line[key.Length] == '='))
                {
                    s.WriteLine("{0} = {1}", key, value);
                    b = 1;
                }
                else
                {
                    s.WriteLine(line);
                }
            }
            if (b == 0)
            {
                s.WriteLine("{0} = {1}", key, value);
            }
            s.Close();
            filez.Close();
            System.IO.File.Replace(file + ".wr", file, file + ".bac");
            System.IO.File.Delete(file + ".bac");

            
        }
    }
}
 

亨利·分钟

新成员
已加入
2011年4月23日
留言内容
1
编程经验
10+
我也是该站点的新手,但是即使我也可以看到,这与组件开发无关。同样,正如JohnH所说,INI文件的大部分功能都丢失了。
 

塞卡

新成员
已加入
2011年6月25日
留言内容
2
编程经验
Beginner
确实,我真的不知道该在哪里发布。
但是,这只是我学习C#的一个小测试项目。我从来没有真正想到过它应该用于一个严肃的项目。它可以用于"setting" files an similar.

这只是一个小有用的"snippet"
 
最佳 底部