从C#上的.txt文件中保存变量

时间:2017-07-27 22:27:10

标签: c# visual-studio variables

抱歉,我是C#的新手并使用Visual Studio。我试图用变量制作一个.txt,所以稍后我需要更改一个路径的数字我可以在.txt文件上更改它而不需要打开代码并更新。

例如,我有这个archive.txt

Joe;Rodriguez;C:\example\hello.txt;398663

这是我的代码:

class Program
{
    static void Main(string[] args)
    {
        String[] split;
        StreamReader sr = File.OpenText(@"C:\folder\archive.txt");
        string line;

        while ((line = sr.ReadLine()) != null)
        {
            split = line.Split(new Char[] { ';' });
            string name = split[0];
            string lastname = split[1];
            string path = split[2];
            string num = split[3];

            Console.WriteLine("Split 0 is: " + name);
            Console.WriteLine("Split 2 is: " + lastname);
            Console.WriteLine("Split 3 is: " + path);
            Console.WriteLine("Split 4 is: " + num);

        }
    }

}

它的作用是,每个值都保存在一个变量上,所以我可以在代码上使用它。它是在符号“;

之后得到的值

values get save on variables

如果我的.txt文件保存如下,如何保存变量:

.txt File

在开始时,.txt Dile在一行中,并以“; ”分隔,我想要做的是程序只保存值“ =(空格) )“并不是一条线,但在每一行都有一个输入。

有办法吗?

感谢您提前帮助。

2 个答案:

答案 0 :(得分:0)

你的问题是你一次读一行,然后在该行所包含的字符串上调用split

您可以做的是逐行将文本文件中的变量分开,然后在循环的每次迭代中将每行的内容分配给不同的变量。

以下是我所谈论的一个例子。它使用字典,因此您可以遍历变量。

试试这个:

        Dictionary<string, string> myVars = new Dictionary<string, string>();
        while ((line = sr.ReadLine()) != null)
        {
            split = line.Split(new Char[] { '=' });
            myVars.Add(split[0], split[1]);
        }

        Console.WriteLine("Split 0 is: " + myVars["name"]);
        Console.WriteLine("Split 2 is: " + myVars["lastname"]);
        Console.WriteLine("Split 3 is: " + myVars["path"]);
        Console.WriteLine("Split 4 is: " + myVars["num"]);
        Console.ReadKey();

这种方法的缺点是,为了使用非字符串变量,你必须转换它们,但这不应该太难。

此示例还要求您的txt文件格式如下:

name=Joe
lastname=Rodriguez
path=C:\example\hello.txt
num=398663

答案 1 :(得分:0)

在您对问题的评论中,您说:

  

我有一个txt文件,我在那里读取一些值并将它们保存到特定的字符串。我的inicial txt文件看起来像这样:Joe; Rodriguez; C:\ example \ hello.txt; 398663它保存了用(;)符号分隔的值,但我想要的最终结果就是让一行分开在我的txt文件上使用(;)符号就像格式一样:name = Joe lastname = Rodriguez path = C:\ example \ hello.txt num = 398663一行中的每个值

以下是如何读取文件,然后以您希望的方式生成输出:

using (var output = new StreamWriter("Output.txt"))
{
    foreach (var thisLine in File.ReadLines("Input.txt"))
    {
        var splits = thisLine.Split(';');
        output.WriteLine($"name = {splits[0]}");
        output.WriteLine($"lastname = {splits[1]}");
        output.WriteLine($"path = {splits[2]}");
    }
}