从文本文件中的第二行读取

时间:2014-03-05 18:25:13

标签: c#

对于其他人来说,这应该很容易。我正在阅读一个包含一些值的文本文件,并将这些值分解为单个值...等等等等。基本上我需要知道如何从我的文本文件中的第二行检索值。我的代码已经从第一行读取了第一个值。我如何重复这个过程,因为我将有20-30个不同的行,它们具有不同的值?

namespace oSnaps
{
    public partial class Form1 : Form
    {
        // read the settings file and disect the value of OSMODE
        private String settingsPath = "N:\\C3D Support\\MySettings.txt";
        private enum oSnap : int
        {
            none = 0,                       // =0
            endpoint = 1 << 0,              // =1
            midpoint = 1 << 1,              // =2
            center = 1 << 2,                // =4
            node = 1 << 3,                  // =8
            quadrant = 1 << 4,              // =16
            intersection = 1 << 5,          // =32
            insertion = 1 << 6,             // =64
            perpendicular = 1 << 7,         // =128
            tangent = 1 << 8,               // =256
            nearest = 1 << 9,               // =512
            apparentIntersection = 1 << 11, // =2048
            extension = 1 << 12,            // =4096
            parallel = 1 << 13,             // =8192

            defaultmode = 1 << 0,           // =1
            editmode = 1 << 1,              // =2
            commandactive = 1 << 2,         // =4
            commandmode = 1 << 3,           // =8
            menumode = 1 << 4,              // =16

        }


        public Form1()
        {
            InitializeComponent();
            LoadSettings();          
        }
        private void LoadSettings()
        {
            if (!System.IO.File.Exists(settingsPath))
            {
                try
                {
                    StreamWriter file = new StreamWriter(settingsPath);
                    file.WriteLine("OSNAPS,0" + Environment.NewLine + "Mouse Value,0");
                    file.Close();
                }
                catch
                {
                    MessageBox.Show("MySettings.txt was unaccessable.  Contact the IT Department if you see this message.");
                    return;
                }
            }
            string[] lines = File.ReadAllLines(settingsPath);
            SetOsnaps(lines);
        }

        private void SetOsnaps(string[] lines)
        {
            try
            {
                // First line = lines[0]
                int val = Convert.ToInt32(lines[0].Split(',')[1]);
                if ((val & 1) == 1) { cbxEndpoint.Checked = true; }
                if ((val & 2) == 2) { cbxMidpoint.Checked = true; }
                if ((val & 4) == 4) { cbxCenter.Checked = true; }
                if ((val & 8) == 8) { cbxNode.Checked = true; }
                if ((val & 16) == 16) { cbxQuadrant.Checked = true; }
                if ((val & 32) == 32) { cbxIntersection.Checked = true; }
                if ((val & 64) == 64) { cbxInsertion.Checked = true; }
                if ((val & 128) == 128) { cbxPerpendicular.Checked = true; }
                if ((val & 256) == 256) { cbxTangent.Checked = true; }
                if ((val & 512) == 512) { cbxNearest.Checked = true; }
                if ((val & 2048) == 2048) { cbxApparent.Checked = true; }
                if ((val & 4096) == 4096) { cbxExtension.Checked = true; }
                if ((val & 8192) == 8192) { cbxParallel.Checked = true; }

                // Second line = lines[1]
                int mval = Convert.ToInt32(lines[1].Split(',')[1]);
                if ((val & 1) == 1) { cbxRcDefault.Checked = true; }
                if ((val & 2) == 2) { cbxRcEdit.Checked = true; }
                if ((val & 4) == 4) { cbxRcCommandActive.Checked = true; }
                if ((val & 8) == 8) { cbxRcCommand.Checked = true; }
                if ((val & 16) == 16) { cbxRcMenu.Checked = true; }

            }

文本文件示例:

val,768

mval,12

2 个答案:

答案 0 :(得分:1)

鉴于上下文(只有两行的短文件),您只需从文件中读取所有行,然后将所有行传递给您的函数

private void LoadSettings()
{
    if (!System.IO.File.Exists(settingsPath))
    {
        try
        {
            System.IO.File.WriteAllText(settingsPath, "OSNAPS,0" + Environment.NewLine + "Mouse Value,0");
        }
        catch 
        {
            MessageBox.Show("MySettings.txt was unaccessable.  Contact the IT Department if you see this message.");
            return;
        }
    }
    string[] lines = System.IO.File.ReadAllLines(settingsPath);
    SetOsnaps(lines);
}

private void SetOsnaps(string[] lines)
{
   try
   {
      // First line = lines[0]
      int val = Convert.ToInt32(lines[0].Split(',')[1]);
      if ((val & 1) == 1) { cbxEndpoint.Checked = true; }
      if ((val & 2) == 2) { cbxMidpoint.Checked = true; }
      if ((val & 4) == 4) { cbxCenter.Checked = true; }
      if ((val & 8) == 8) { cbxNode.Checked = true; }
      if ((val & 16) == 16) { cbxQuadrant.Checked = true; }
      if ((val & 32) == 32) { cbxIntersection.Checked = true; }
      if ((val & 64) == 64) { cbxInsertion.Checked = true; }
      if ((val & 128) == 128) { cbxPerpendicular.Checked = true; }
      if ((val & 256) == 256) { cbxTangent.Checked = true; }
      if ((val & 512) == 512) { cbxNearest.Checked = true; }
      if ((val & 2048) == 2048) { cbxApparent.Checked = true; }
      if ((val & 4096) == 4096) { cbxExtension.Checked = true; }
      if ((val & 8192) == 8192) { cbxParallel.Checked = true; }

      // Second line = lines[1]
      int mval = Convert.ToInt32(lines[1].Split(',')[1]);  
      if ((val & 1) == 1) { cbxRcDefault.Checked = true; }
      if ((val & 2) == 2) { cbxRcEdit.Checked = true; }
      if ((val & 4) == 4) { cbxRcCommandActive.Checked = true; }
      if ((val & 8) == 8) { cbxRcCommand.Checked = true; }
      if ((val & 16) == 16) { cbxRcMenu.Checked = true; }

 }

答案 1 :(得分:0)

你试过阅读有关从文件中读取的内容吗?似乎不是:/

bool isFirst = true;

using (var reader = new StreamReader(filePath))
{
    while(!reader.EndOfStream)
    {
        if (isFirst)
        {
            isFirst = false;
            continue;
        }

        SetOsnaps(reader.ReadLine());
    }
}