StatusLabel.Text = "正在读取原始数据";
FileStream fs = new FileStream(openADFile, FileMode.Open);
BinaryReader br = new BinaryReader(fs);
int bufferSize = 1048576; //每次读取的字节数 每次读取1MB
byte[] buffer = new byte[bufferSize];
long fileLength = fs.Length;//文件流的长度 StreadReader对象没有length方法
int readCount = (int)Math.Ceiling((double)(fileLength / bufferSize)); //需要对文件读取的次数
progressBar.Maximum = readCount;
progressBar.Visible = true;
int readIndex = 0;//当前已经读取的次数
statusStrip.Update();
do
{
buffer = br.ReadBytes(bufferSize);
list.AddRange(buffer);
deleData();
readIndex++;
progressBar.PerformStep();
progressBar.Invalidate();
} while (readIndex < readCount);
fs.Close();
progressBar.Visible = false;
progressBar.Value = 0;
progressBar.Maximum = 0;
StatusLabel.Text = "读取完成";
list.Clear();
statusStrip.Invalidate();
///处理数据
private void deleData()
{
if (list.Count >= 86)
{
#region 数据校验
校验并且调用方法createFile(list[1],list[2],line);
# endregion
deleData();
}
else
{
return;
}
}
private void createFile(int group, int index, float[] line)
{
string filename = folderName + "//" + group + "//" + (index + 1) + ".log";
try
{
FileStream fi;
if (File.Exists(filename))
{
fi = new FileStream(@filename, FileMode.Append);
}
else
{
fi = new FileStream(@filename, FileMode.Create);
}
using (StreamWriter w = new StreamWriter(fi))
{
for (int i = 0; i < line.Length; i++)
{
w.Write(line[i] + ",");
}
w.WriteLine();
w.Flush();
w.Close();
w.Dispose();
}
}
catch (Exception ex)
{
port.errorData(ex.Message);
MessageBox.Show(ex.Message);
}
counter++;
}
/// <summary>
/// 读取二进制文件
/// </summary>
private delegate void readBinary();
private void ReadStreamFormBinary()
{
try
{
if (!statusStrip.InvokeRequired)
{
if (openADFile != null && File.Exists(openADFile))
{
for (int group = 0; group < 4; group++)
{
for (int index = 0; index < 25; index++)
{
lines[group, index] = new List<float>(1000);
}
}
StatusLabel.Text = "正在读取原始数据";
FileStream fs = new FileStream(openADFile, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
int bufferSize = 524288; //每次读取的字节数 每次读取1MB = 1048576 byte 2MB = 2097152byte 0.5MB=524288; 262144 131072
long fileLength = fs.Length;//文件流的长度 StreadReader对象没有length方法
int readCount = (int)Math.Ceiling((double)(fileLength / bufferSize)); //需要对文件读取的次数
progressBar.Maximum = readCount;
progressBar.Visible = true;
int readIndex = 0;//当前已经读取的次数
statusStrip.Invalidate();
int cs = 0;
do
{
if (buffer != null)
{
buffer = new byte[bufferSize + overplus];
for (int i = 0; i < overplus; i++)
{
buffer[i] = overPlus[i];
}
}
else
{
buffer = new byte[bufferSize];
}
br.Read(buffer, overplus, bufferSize);
overplus = 0;
while (!over)
{
cs++;
deleData();
}
createFile(); //读取完一次之后 保存一下数据
plus = 0;
over = false;
cs = 0;
readIndex++;
progressBar.PerformStep();
progressBar.Invalidate();
} while (readIndex < readCount);
br.Close();
fs.Close();
buffer = null;
progressBar.Visible = false;
progressBar.Value = 0;
progressBar.Maximum = 0;
StatusLabel.Text = "AD读取完成";
statusStrip.Invalidate();
}
}
else
{
readBinary read = new readBinary(ReadStreamFormBinary);
Invoke(read);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
port.errorData(ex.Message);
}
}