方法一:使用StreamReader逐行读取文件
//使用StreamReader逐行读取文件
//读取TXT文件中的任务单信息
// 方法定义两个out参数来接收解析的数据,并返回一个布尔值表示是否成功
public static bool ExtractDataFromFile(out string testNum, out string productModel)
{
testNum = string.Empty;
productModel = string.Empty;
string filePath = @"D:\工作\YiJieMes\MesTask\Task.txt";
try
{
// 使用StreamReader逐行读取文件
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// 去除行首和行尾的引号(如果它们存在)
line = line.Trim('"');
if (line.StartsWith("TestNume:"))
{
// 假设值紧跟在冒号和引号之后,直到行尾或下一个引号
testNum = line.Substring("TestNume:".Length).Trim();
}
else if (line.StartsWith("ProductModel:"))
{
// 假设值紧跟在冒号和引号之后,直到行尾或下一个引号(但这里没有额外的引号)
productModel = line.Substring("ProductModel:".Length).Trim();
}
// 如果两个值都已找到,可以提前退出循环
if (!string.IsNullOrEmpty(testNum) && !string.IsNullOrEmpty(productModel))
{
break;
}
}
}
// 如果两个值都非空,则认为成功
return !string.IsNullOrEmpty(testNum) && !string.IsNullOrEmpty(productModel);
}
catch (Exception ex)
{
// 错误处理
Console.WriteLine($"Error reading file: {ex.Message}");
return false;
}
}
如下图所示:
方法二:File.ReadAllText读取,读取后反序列Json格式数据,反序列化为MesTaskData类型对象
//创建一个MesTask类 定义任务单中的属性
public class MesTaskData
{
public string ProductModel { get; set; }//产品编码
public string KbarCode { get; set; }//MES 条码。
public uint TestNum { get; set; }//加工的数量。
}
public static MesTaskData MesTask()
{
MesTaskData taskData = new MesTaskData();
try
{
string jsonFilePath = @"D:\工作\YiJieMes\MesTask.txt"; //设置文件地址
if (File.Exists(jsonFilePath)) //检查指定的文件路径 (jsonFilePath) 是否存在一个文件
{
string jsonContent = File.ReadAllText(jsonFilePath); //读
//取指定文件路径 (jsonFilePath) 下的文件内容
Console.WriteLine(jsonContent); //输出文件内容
MessageBox.Show(jsonContent);
//反序列Json格式数据
//将jsonContent字符串中的JSON数据反序列化为MesTaskData类型的对象,并将该对象赋值给taskData变量
taskData = JsonConvert.DeserializeObject<MesTaskData>(jsonContent);
string testnum = taskData.TestNum.ToString();
string kbarcode = taskData.KbarCode;
string productmodel = taskData.ProductModel;
message = $"加工数量: {testnum}, MES 条码: {kbarcode}, 产品编码: {productmodel}";
}
}
catch (Exception err) { MessageBox.Show(err.ToString()); }//如果出错 提示报错
return taskData;
如图所示: