c#中,怎样逐行读取.txt里面的字符,统计出现的次数,并保存到另一个.txt文件里

如题所述

using System;
using System.IO;

class Test
{

    public static void Main()
    {
        string path = @"D:\1.txt"; //txt文件的路径
        try
        {
            if (File.Exists(path)) //文件必须存在
            {
                using (StreamReader sr = new StreamReader(path)) //StreamReader读取文件流
                {
                    string desPath = @"D:\1_New.txt";
                    using (StreamWriter sw = new StreamWriter(desPath)) //StreamWriter写入文件流
                    {
                        while (sr.Peek() >= 0) //对应行有内容才继续
                        {
                            sw.WriteLine(sr.ReadLine()); //写入读取的每行内容
                        }
                    }
                }

                Console.WriteLine("Work done.");
            }
            else
            {
                Console.WriteLine("File NOT exists.");
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }

        Console.ReadKey();
    }
}

追问

只能写在控制台里面吗?可以写Form里面,加一个button,写在里面吗

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-09
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                
                string[] Lines=File.ReadAllLines("C:\\Demo.txt");
                for(int i=0;i<Lines.Length;i++) 
                {
                    Dictionary<string, int> result = new Dictionary<string, int>();
                    foreach (char chr in Lines[i].ToCharArray()) 
                    {
                        if (result.ContainsKey(chr.ToString()))
                            result[chr.ToString()] += 1;
                        else
                            result.Add(chr.ToString(),1);
                    }
                    string end=string.Format("第{0}行:",i+1);
                     
                    foreach(KeyValuePair<string, int> kvp in result)
                    {
                        end+=string.Format("[{0}]字出现了{1}次,\t",kvp.Key,kvp.Value);
                    }
                   File.AppendAllText("C:\\Result.txt",end);                }
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
        }
    }
}

追问

可以具体解释下是什么意思吗?

追答static void Main(string[] args)
{
try
{
//读取文本的所有行数据
string[] Lines=File.ReadAllLines("C:\\Demo.txt");
for(int i=0;i<Lines.Length;i++) //循环取出每一行
{
                // 用于保存数据的字典
Dictionary<string, int> result = new Dictionary<string, int>();
foreach (char chr in Lines[i].ToCharArray()) //读取每行的每一个字
{
                    //如果字典中已包含了这个字
if (result.ContainsKey(chr.ToString()))
result[chr.ToString()] += 1;//数量增加1
else
result.Add(chr.ToString(),1);//否者存放到字典中
}
string end=string.Format("第{0}行:",i+1);//要存的数据头
foreach(KeyValuePair<string, int> kvp in result)//读取字点中的结果
{
end+=string.Format("[{0}]字出现了{1}次,\t",kvp.Key,kvp.Value);
}
File.AppendAllText("C:\\Result.txt",end);  //将结果保存到新的文本中。
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}

本回答被提问者和网友采纳

c#对指定文件夹里的所有txt文件进行统一的的处理,后还按原来的名字存储...
读txt文件: using(StreamReader sr=new StreamReader("文件路径")){ string strTXT=string.Empty;while((strTXT=sr.ReadLine())!=null){ \/\/用流读取是一行行读的,这里是你想把数据放到哪里,比如说datatable \/\/或者List,个人感觉List比较好 } } 将处理后的数据写入到txt文件然后存进新的文...

C#怎么分行读取Txt文件的数据
2.文件的读取 (1).使用FileStream类进行文件的读取,并将它转换成char数组,然后输出。 byte[] byData = new byte[100]; char[] charData = new char[1000]; public void Read() { try { FileStream file = new FileStream("E:\\\\test.txt", FileMode.Open); file.Seek(0, SeekOrigin.Begin); file.R...

C#中怎样从一个文件读取内容然后写到另一个文件中去
\/\/ Try:using System.IO; \/\/ 添加此引用StreamWriter writer = new StreamWriter(@"C:\\Users\\wangshuxing\\Documents\\wsx.txt"); \/\/ writer.WriteLine("wsxxxxx"); string name = openFileDialog.FileName;\/\/提供完整的文件路径 FileInfo file = new FileInfo(name); \/\/ MessageBox...

C#编程 如何统计txt或者word文档中某个字出现的次数,求大神指导,稍微具 ...
char key='中';\/\/声明1个变量来保存指定字符出现的次数 int num = 0;foreach (char c in content){ if (c == key)num++;} \/\/遍历完成之后 num的值就是指定的字符出现的次数 Console.WriteLine("{0}出现了{1}次",key,num);

C#里面如何将.txt文件中的数据读入,存入数组
System.IO.TextReader reader = new System.IO.StreamReader(filePath);使用 reader.ReadLine()或reader.ReadToEnd()获取字符串,按照你的需要存入数组即可

c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数
Generic;using System.Linq;using System.Text;using System.IO;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { \/\/从文本文件中读出所有行 string[] lines = File.ReadAllLines("文本1.txt"); \/\/构造一个Linq查询 var qry = from ...

C#怎么判断TXT里同名内容出现了多少次!例如1出现了4次,2出现了4次。
static void Main(string[] args){ string path = @"E:\\130\\2.txt";\/\/文件目录 string str = File.ReadAllText(path,Encoding.Default);\/\/以默认编码方式打开文本,读取到的内容都赋给str char[]ch=str.ToCharArray();int[]count=new int[str.Length];\/\/定义统计次数的数组 for (int i ...

C#.NET 有两个txt文件,怎样把一个txt文件里的内容复制到另一个里面...
"1.txt", FileMode.Open);FileStream fsTarget = new FileStream("2.txt", FileMode.OpenOrCreate);byte[] sourceArr = new byte[fsSource.Length];fsSource.Read(sourceArr, 0, sourceArr.Length);fsTarget.Write(sourceArr, 0, sourceArr.Length);fsSource.Close();fsTarget.Close();...

C#读取txt文本文件中的数据
1、首先先来看一下准备的txt文本文件的内容。2、然后在程序中引入操作文件的命名空间System.IO。3、接下来需要定义一个变量,存储文件所在的路径。4、然后先读取文本内容,调用File类的ReadAllLines即可读取所有内容。5、接下来是写入内容,按照下图的方式,准备要写入的内容。6、准备好内容以后,调用File的...

C#读取txt文件 从指定位置开始读取指定长度的字符 并赋值给一个字符串...
流程应该是:先打开文件,然后 Seek到指定位置,然后读出指定位置的数据 如果还想快一点,考虑用内存映射的方式(猜,没试过)至于前面提到的 ReadAllText ,是将数据全部读入内存,在处理,基本不符合你的要求

相似回答