首页 > 解决方案 > 从 .txt 文件填充和二维数组

问题描述

所以,我需要查看文件并用文件中的数据填充二维数组。我想不出比这更好的方法了,但是这段代码完全冻结了。这是代码。

我的想法是我要查看源文件中的所有文本,然后我要检查一行是否包含我需要的东西,如果是,我将添加到我的二维数组中,然后我将写入不同的txt文件。

string[,] FileBase = new string[100,100];
DateTime Date = DateTime.UtcNow;
string time = Date.ToString();
time = time.Replace(':', '.');
string ReportPath = Directory.GetCurrentDirectory() + "\\Report from " + time + ".txt";
        
int Value = 0;
int i = 0, j = 0;
string item;
int controlD = 0;
int sensor = 0;
int p = 0;
bool loadcell = false;
bool possensor = false;
int smth = 0;
string curr = comboBox1.SelectedItem.ToString();
curr = curr.Remove(0, curr.IndexOf("RCU") + 3); 
int current = Convert.ToInt32(curr);

string localpath = path + "\\control\\RCU" + curr + "\\cfg\\RCU" + curr + ".cfg"; 
FileStream file1 = new FileStream(localpath, FileMode.Open); 
StreamReader reader = new StreamReader(file1);
while ((item = reader.ReadLine()) != null)
{
    for (i = p; i < 100; i++)
    {
        for (j = 0; j < 1000; i++)
        {
            if (item.Contains("Signal_Sensor"))
            {
                sensor++;
                FileBase[i, j] = "Signal_SensorA" + sensor;
                break;
            }
            else if (item.Contains("Signal_PositionA"))
            {
                controlD++;
                FileBase[i, j] = "Signal_PositionA" + controlD;
                break;
            }
            else if (item.Contains("Division") && (controlD != 0))
            {
                FileBase[i, j] = "Division";
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("LowerLimitExternal"))
            {
                FileBase[i, j] = "LowerLimitExternal";
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("UpperLimitExternal"))
            {
                FileBase[i, j] = "UpperLimitExternal";
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("LowerLimit"))
            {
                FileBase[i, j] = "LowerLimit";
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("UpperLimit"))
            {
                FileBase[i, j] = "UpperLimit";
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("LoadCell"))
            {
                loadcell = true;
                break;
            }
            else if (item.Contains("PositionSensor"))
            {
                possensor = true;
                break;
            }
            else if (item.Contains("EnableSensorA" + smth))
            {
                smth++;
                FileBase[i, j] = "EnableSensorA" + smth;
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            else if (item.Contains("InvertSensorA"))
            {
                smth++;
                FileBase[i, j] = "InvertSensorA" + (smth - 3);
                FileBase[i, j + 1] = Convert.ToString(CommaClear(Value));
                break;
            }
            if (smth ==6)
            {
                smth = 0;
                break;
            }
        }

        p = i;
        break;
    }
}

reader.Close();
File.Create(ReportPath);
FileStream ReportFill = new FileStream(ReportPath, FileMode.Open);
StreamReader reader1 = new StreamReader(ReportFill);
WriteArray();
reader1.Close();

提前致谢!

标签: c#multidimensional-arraytextfreeze

解决方案


推荐阅读