C#读取txt文件并 依照条件分类输出到不同的txt文件中

现有文件e:\text.txt 内容如下
99
200
150
Wang
如何使用C# 读取text.txt文件 并且将100以下的数字输出到1.txt, 将100以上的数字输出到2.txt, 将不是数字的输出到3.txt并保存。 求大神解决!!急!

1. C# 操作txt,使用的是流操作。主要用到的两个对象是StreamReader和StreamWriter。使用的对象方法是:ReadLine()一行一行读取和WriteLine()一行一行写入。
由于用到Stream对象,所以首先要引用System.IO命名空间:
using System.IO;
引用后,定义StreamReader和StreamWriter对象:
private StreamReader _rstream = null;
private StreamWriter _wstream = null;
定义完成后,只需在使用的时候进行初始化如:
_rstream = new StreamReader(spath, System.Text.Encoding.Default); //读取 spath参数为需要读取的txt文件路径
_wstream = new StreamWriter(spath); //保存 spath 为文件保存的路径,有多个构造函数,可以指定文件是覆写还是追加。
初始化完成后,就可以调用方法对txt文件进行操作了,如下:
读文件:
_rstream.ReadLine()
写文件:
_wstream.Write(data);
_wstream.WriteLine();
读写完毕后,关闭释放对象
_rstream.Close(); //读文件后关闭
_wstream.Flush(); //写入流,并清理缓冲区
_wstream.Close(); //写文件后关闭

2.函数代码:

private void WriteLstToTxt(ListBox lst,string spath) //listbox 写入txt文件
{
    int count = lst.Items.Count;
    _wstream = new StreamWriter(spath);
    for (int i = 0; i<count;i++){
        string data = lst.Items[i].ToString();
        _wstream.Write(data);
        _wstream.WriteLine();
    }
    _wstream.Flush();
    _wstream.Close();
}
private void ReadTxtToLst(ListBox lst,string spath) //listbox 读取txt文件
{
    _rstream = new StreamReader(spath, System.Text.Encoding.Default);
    string line;
    while ((line = _rstream.ReadLine()) != null)
    {
        lst.Items.Add(line);
    }
    _rstream.Close();
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-16

用StreamReader类读取文件,用StreamWriter写入文件,完整代码如下:

static void Main()
{
StreamReader sr = new StreamReader(@"D:\\Test\text.txt");
string s1 = "";//并且将100以下的数字输出到1.txt
string s2 = "";//将100以上的数字输出到2.txt
string s3 = "";//将不是数字的输出到3.txt
while (!sr.EndOfStream)
{
    string s = sr.ReadLine();
    int i = 0;
    if (Int32.TryParse(s, out i))//是数字
    {
        if (i < 100) //100以下
        {
            s1 += s + Environment.NewLine;
        }
        else //100以上
        {
            s2 += s + Environment.NewLine;
        }
    }
    else//不是数字
    {
        s3 += s + Environment.NewLine;
    }
}
using (StreamWriter sw1 = new StreamWriter("D:\\Test\\1.txt"))
{
    sw1.Write(s1);
}
using (StreamWriter sw2 = new StreamWriter("D:\\Test\\2.txt"))
{
    sw2.Write(s2);
}
using (StreamWriter sw3 = new StreamWriter("D:\\Test\\3.txt"))
{
    sw3.Write(s3);
}
Console.WriteLine("读取文件完毕!");
Console.Read();
}

追问

谢谢 再问你下 如果是要读取的text.txt中内容是(ID(数字), Name(字母))格式
123, Wang
321, Zhang
356, Wang
aaa, Wang
如何将名字叫Wang的人 输出到 1.txt中 将错误的ID和不叫Wang的人输出到2.txt中

追答

取出一行以后,再split(',')一下,然后再判断。
其中s.split(',')[0]就是ID,
s.split(',')[1]就是名字。

本回答被提问者采纳
相似回答