最近帮一个老学长,准研究生,做一个入学要交的作业,要求是C#/Python语言,我就想熟悉下C#。

大概需求如下图展示:

直接看代码:=====================================

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 作业
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

private void SelectedBtb_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = false;//该值确定是否可以选择多个文件
            dialog.Title = "请选择文件夹";
            dialog.Filter = "文本文件(*.txt*)|*.txt*";
            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string file = dialog.FileName;
                this.txtPath.Text = file;
            }
            else
            {
                MessageBox.Show("未选中txt文件");
            }
        }

private void Button1_Click(object sender, EventArgs e)
        {
           
            //读取文件的位置
            string readPath = this.txtPath.Text.Trim();
            //存储文件的位置及名字
            string writePath = this.textBox1.Text.Trim();

//按行读取txt
            string[] lines = File.ReadAllLines(readPath, System.Text.Encoding.Default);
            //list用于存目标列中的、转为double类型的数据
            List<double> list = new List<double>();
            //list_xxx用于存分级数据
            List<double> list_1 = new List<double>();
            List<double> list_2 = new List<double>();
            List<double> list_3 = new List<double>();
            List<double> list_4 = new List<double>();

//为了方便double数值与科学计数法的数值转换,存在键值对中
            Dictionary<double, string> dic = new Dictionary<double, string>();

foreach (var item in lines)
            {
                //分割数据
                string[] str = item.Split(new char[] { ' ' });
                //得到目标列数据
                string goalStr = str[2];
                //将目标列的数据转为double类型
                double goalData = double.Parse(goalStr);
                //将得到的double的数据存起来
                list.Add(goalData);

//以double类型数据作为键,科学计数值作为值,目的是:找到科学记数法的值容易找到
                dic[goalData] = goalStr;
            }
            //归类,找到自己属于哪一分级
            foreach (var item in list)
            {
                if (item < -0.005)
                {
                    list_1.Add(item);
                }
                else if (item > -0.005 && item < -0.003)
                {
                    list_2.Add(item);
                }
                else if (item > -0.003 && item < -0.001)
                {
                    list_3.Add(item);
                }
                else
                {
                    list_4.Add(item);
                }

}

//注意:分块只能4 2 3 1这样的顺序,不然会导致越界
            //i为lines的索引
            int i = 0;
            for (; i < list_4.Count; i++)
            {
                StreamWriter sw = CreateAppendTxt(writePath);
                //按行写入
                sw.WriteLine(lines[i] + " " + dic[list_4[i]] + "_分块4");
                sw.Close();
            }
            //为了验证是否长度正确
            Console.WriteLine(i);
            int j = 0;
            for (; i < (list_4.Count + list_2.Count) && j < list_2.Count; i++)
            {
                StreamWriter sw = CreateAppendTxt(writePath);
                sw.WriteLine(lines[i] + " " + dic[list_2[j++]] + "_分块2");
                sw.Close();
            }
            //为了验证是否长度正确
            Console.WriteLine(i);
            int k = 0;
            for (; i < (list_4.Count + list_2.Count + list_3.Count) && k < list_3.Count; i++)
            {
                StreamWriter sw = CreateAppendTxt(writePath);
                sw.WriteLine(lines[i] + " " + dic[list_3[k++]] + "_分块3");
                sw.Close();
            }
            //为了验证是否长度正确
            Console.WriteLine(i);
            int l = 0;
            for (; i < (list_4.Count + list_2.Count + list_3.Count + list_1.Count) && l < list_1.Count; i++)
            {
                StreamWriter sw = CreateAppendTxt(writePath);
                sw.WriteLine(lines[i] + " " + dic[list_1[l++]] + "_分块1");
                sw.Close();
            }

this.shouTxt.Text = "完成啦,赶紧查看吧!";
        }

/// <summary>
        /// 创建一个txt写入流
        /// </summary>
        /// <param name="path">写文件路径</param>
        /// <returns>StreamWriter对象</returns>
        private static StreamWriter CreateAppendTxt(string path)
        {
            FileInfo myFile = new FileInfo(path);
            StreamWriter sw = myFile.AppendText();
            return sw;
        }

private void Form1_Load(object sender, EventArgs e)
        {
            this.shouTxt.Text = "数据量大,可能要一会儿!!";
            //如果不手动选存储位置,则默认为D盘根目录
            this.textBox1.Text = @"D:\new_" + DateTime.Now.Year+DateTime.Now.Month+DateTime.Now.Day+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second+".txt";
        }
    }
}
直接看代码:================================

各位可以根据代码添加窗体就行!

这是数据自己下载:

链接:https://pan.baidu.com/s/19l3mGq-QnLfn2jvK7BGv_A 
提取码:k2ve 
复制这段内容后打开百度网盘手机App,操作更方便哦

C#按行读取、写入txt文件相关推荐

  1. 【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查

    一.需求分析 1.职工信息管理系统的目标是为方便管理层对职工的信息管理,要如何设计一个操作简便且又能很好的管理职工信息的系统就要涉及到各种逻辑问题. 2.管理系统将可以对职工信息进行操作,对职工信息进 ...

  2. python 文件写入多个参数_pandas 把数据写入txt文件每行固定写入一定数量的值方法...

    我遇到的情况是:把数据按一定的时间段提出.比如提出每天6:00-8:00的每个数据,可以这样做: # -*-coding: utf-8 -*- import pandas as pd import d ...

  3. java实现读取txt文件和将内容写入txt文件

    1.java读取txt和写入txt文件 package com.ztesoft.TestClusterHHHT;import java.io.BufferedReader; import java.i ...

  4. python读取txt文件写入-python 读取、写入txt文件的示例

    写入文件 使用open()函数和write()函数 但是有两种写法,分别是'a'和'w' 'a' 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,会接着已有的内容的后面写入 with ope ...

  5. [java进阶]1.Java读取txt文件和写入txt文件

    1. Java读取txt文件 import java.io.*; import java.util.ArrayList; import java.util.List;public class unit ...

  6. c++读取和写入TXT文件的整理

    c++读取和写入TXT文件的整理 #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文 ...

  7. c++读取和写入TXT文件的整理 1

    c++读取和写入TXT文件的整理 #include "stdafx.h" #include <iostream> //无论读写都要包含<fstream>头文 ...

  8. BAT脚本: ping检测网络稳定性 与 取命令结果的指定行方法 与 将变量内容追加写入txt文件方法

    ping检测稳定性脚本 @echo off set filePath=D:/pingRecord.csv set ping_url=www.baidu.com set sleep_times=5 :t ...

  9. C++实现从.txt文件中读取数据存入数组,将数组数据写入.txt文件

    声明: 编译器:vs2017 所有用到的.txt文件都是提前放在当前工程目录下的. 完整测试代码:github–Zhaotiedan 方法一:针对可以提前知道存入数组的大小 1.从.txt文件中读取数 ...

  10. Java读取txt文件和写入txt文件

    弱弱问一句: 像这种代码都是网上找的,自己不理解,也不记得,本人应该对这样的代码了解到什么程度呢? package com.nickwong.code;import java.io.*;/*** Cr ...

最新文章

  1. tf.train.exponential_decay
  2. QT的QModbusResponse类的使用
  3. HDU - 7091 重叠的子串(后缀自动机+set启发式合并+树上倍增)
  4. [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)
  5. mysql5.5编译安装参数_mysql-5.5源码编译安装(附参数对照表)
  6. tkinter要安装吗 苹果_建造存10万斤的苹果保鲜冷库安装工程要考虑哪些因素?...
  7. Linux常用正则表达式
  8. 给android应用程序系统的签名
  9. mysql校验规则居民身份证号_身份证号规则及校验
  10. wps2019将表格数据转换成工资条的操作方法
  11. 各大IT公司、软件公司员工等级(级别)及薪资
  12. 傅里叶分析之看不懂就掐死我吧(完整版)
  13. html ul默认的项目符号是什么形状,列表项ol、ul前项目符号
  14. 我们需要“梦想比回忆多”的精神
  15. 一直空中三角测量计算失败
  16. RFID正为零售防损带来新变化
  17. 大学计算机基础方案一,《大学计算机基础》实验实施方案-学生用汇.docx
  18. no openvas scap database found. (tried /var/lib/openvas/scap-data/scap.db)错误
  19. 电脑安装双系统(win+Linux)的一些重要步骤总结
  20. [转]Unix下针对邮件,搜索,网络硬盘等海量存储的分布式文件系统项目(关于GFS、MogileFS分布式文件系统邮件列表)

热门文章

  1. wps云文档 wps自动备份怎么设置和取消
  2. 人生百味-7:一个人干活,一群人催进度,谁之过?
  3. 【spring】PO,VO,DAO,BO,POJO,Bean之间的区别与解释
  4. 1055-叙拉古猜想
  5. HTTP content-type
  6. 【Python】Pandas 表格样式设置指南,看这一篇就够了!
  7. iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录
  8. 洛谷 P1135奇怪的电梯
  9. VM (虚拟机)下载及安装详细步骤
  10. 从《羞羞的铁拳》中嗅到的