1111

      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);
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值