C#读取文件夹中所有txt文档中的数据,并计算其有效值输出
一、文件夹下的所有txt文档:
二、代码:
/// <summary>
/// 遍历两级目录下的所有txt文档
/// 获取每个txt文档中的数据,并计算其有效值
/// </summary>
static void Main(string[] args)
{
string path0 = @"E:\不同转速"; //根目录
string[] files0 = Directory.GetDirectories(path0); //获取根目录下的子目录
foreach (string file0 in files0) //遍历根目录下的所有子目录
{
string path1 =file0;
string[] files1 = Directory.GetFiles(path1,"*.txt"); //获取子目录下的所有TXT文档名
foreach (string file1 in files1) //遍历子目录下的所有TXT文档
{
//Console.WriteLine(file1); //打印所有子目录下的所有TXT文件名
string[] lines = File.ReadAllLines(file1); //读取txt文档的所有行
List<double> listData = new List<double>(); //初始化数据集合用于保存读取的txt中的数据
List<double> listRMS = new List<double>(); //有效值集合
for (int i = 0; i < lines.Length; i++) //将读取到的txt中的数据写入list中
{
try
{
listData.Add(Convert.ToDouble(lines[i]));
}
catch
{
Console.Write("字符串不合法");
}
finally
{
}
}
Console.WriteLine("有效值RMS是:RMS={0}", GetRMS(listData)); //输出有效值
}
}
Console.ReadKey();
}
/// <summary>
/// 获取均值
/// </summary>
/// <param name="ls"></param>
/// <returns></returns>
public static double GetMean(List<double> ls)
{
double sumNumber = 0;
foreach (double item in ls)
{
sumNumber = sumNumber + item;
}
return (sumNumber / ls.Count);
}
/// <summary>
/// 获取有效值(均方根值)
/// </summary>
/// <param name="ls"></param>
/// <returns></returns>
public static double GetRMS(List<double> ls)
{
List<double> lsNew = new List<double>();
double meanValue = 0;
foreach (var item in ls)
{
lsNew.Add(item * item);
}
meanValue = GetMean(lsNew);
return Math.Sqrt(meanValue);
}
三、输出结果:
觉得有用的兄弟别忘点个赞支持一下