C# 从.txt文件填充和二维数组

C# 从.txt文件填充和二维数组,c#,multidimensional-array,text,freeze,C#,Multidimensional Array,Text,Freeze,所以,我需要查看文件并用文件中的数据填充二维数组。我想不出比这更好的方法,但这段代码完全冻结了。这是密码 我的想法是,我要查看源文件中的所有文本,然后我要检查一行是否包含我需要的内容,如果是,我将添加到我的2D数组中,然后我将写入另一个txt文件 string[,] FileBase = new string[100,100]; DateTime Date = DateTime.UtcNow; string time = Date.ToString(); time = time.Replace(

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

我的想法是,我要查看源文件中的所有文本,然后我要检查一行是否包含我需要的内容,如果是,我将添加到我的2D数组中,然后我将写入另一个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();
string[,]FileBase=新字符串[100100];
DateTime Date=DateTime.UtcNow;
字符串时间=Date.ToString();
time=time.Replace(':',');
字符串ReportPath=Directory.GetCurrentDirectory()+“\\Report from”+time+“.txt”;
int值=0;
int i=0,j=0;
字符串项;
int-controlD=0;
int传感器=0;
int p=0;
bool loadcell=false;
bool-possensor=false;
int-smth=0;
字符串curr=comboBox1.SelectedItem.ToString();
当前=当前移除(0,当前索引(“RCU”)+3);
int current=转换为32(当前);
字符串localpath=path+“\\control\\RCU”+curr+“\\cfg\\RCU”+curr+“.cfg”;
FileStream file1=新的FileStream(localpath,FileMode.Open);
StreamReader=新的StreamReader(文件1);
而((item=reader.ReadLine())!=null)
{
对于(i=p;i<100;i++)
{
对于(j=0;j<1000;i++)
{
if(项目包含(“信号传感器”))
{
传感器++;
FileBase[i,j]=“信号传感器A”+传感器;
打破
}
否则如果(项目包含(“信号位置A”))
{
controlD++;
FileBase[i,j]=“信号位置A”+控制D;
打破
}
如果(项目包含(“分割”)和(控制D!=0))
{
FileBase[i,j]=“除法”;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
else if(项包含(“LowerLimiternal”))
{
FileBase[i,j]=“LowerLimitExternal”;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
else if(项包含(“外部”))
{
FileBase[i,j]=“UpperLimitExternal”;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
else if(项包含(“LowerLimit”))
{
FileBase[i,j]=“LowerLimit”;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
else if(项包含(“上限”))
{
FileBase[i,j]=“上限”;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
else if(项目包含(“称重传感器”))
{
loadcell=true;
打破
}
否则,如果(项目包含(“位置传感器”))
{
possensor=true;
打破
}
否则,如果(项目包含(“使能传感器A”+smth))
{
smth++;
FileBase[i,j]=“EnableSensorA”+smth;
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
否则,如果(项目包含(“A”))
{
smth++;
FileBase[i,j]=“InvertSensorA”+(smth-3);
FileBase[i,j+1]=Convert.ToString(CommaClear(Value));
打破
}
如果(smth==6)
{
smth=0;
打破
}
}
p=i;
打破
}
}
reader.Close();
创建(ReportPath);
FileStream ReportFill=newfilestream(ReportPath,FileMode.Open);
StreamReader reader1=新的StreamReader(ReportFill);
WriteArray();
reader1.Close();

提前谢谢

它是在一个特定的方法上冻结还是永远循环?@Ben,在第一次完全迭代后冻结。它检查源文件中的第一行,该行刚刚停止。