一文搞懂C#实现读写文本文件中的数据

作者:朱小哥 时间:2021-11-07 00:21:07 

【1】首先我们定义一段假数据,这里以一个string为例字


static void Main(string[] args)
{
string data = "我的数据要开始存入文件了,我好开心啊!覆盖了吗?好像覆盖了,真的覆盖了";
}

【2】接着我们将这个数据写入.txt文件
代码如下:


/// <summary>
       /// 保存数据data到文件的处理过程;
       /// </summary>
       /// <param name="data"></param>

public static String SavaProcess(string data) {
           System.DateTime currentTime = System.DateTime.Now;
           //获取当前日期的前一天转换成ToFileTime
           string strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd");
           //按照日期建立一个文件名
           string FileName = "MyFileSend" + strYMD + ".txt";
           //设置目录
           string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir";
           //判断路径是否存在
           if(!System.IO.Directory.Exists(CurDir)){
               System.IO.Directory.CreateDirectory(CurDir);
           }
           //不存在就创建
           String FilePath = CurDir + FileName;
           //文件覆盖方式添加内容
           System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false);
           //保存数据到文件
           file.Write(data);
           //关闭文件
           file.Close();
           //释放对象
           file.Dispose();
           return FilePath;
       }

结果是返回一个文件路径,根据具体场合可返回,也可不返回;我们来测试一下文件是否生成成功,我们在Main函数中调用这个方法,代码如下:


static void Main(string[] args)
       {
           string data = "我的数据要开始存入文件了,我好开心啊!覆盖了吗?好像覆盖了,真的覆盖了";
           String filePath = SavaProcess(data);  

Console.WriteLine(filePath);      
       }

运行结果如下:

一文搞懂C#实现读写文本文件中的数据

很显然,在相关目录下,生成了想对应的文件;我们在看看cmd中打印出了如下路径:

D:\VSProject\SavaProcessToFile\SavaProcessToFile\bin\Debug\SaveDirMyFileSend20170628.txt

生成的这个路径对我们接下来的工作很重要,读取文本数据的时候需要用到;

【3】读取.txt文件数据

我们再定义一个读取数据的方法:


 /// <summary>
       /// 获取文件中的数据
       /// </summary>
       /// <param name="args"></param>

public static string fileToString( String filePath ){
           string strData = "";
           try
           {
               string line;
               // 创建一个 StreamReader 的实例来读取文件 ,using 语句也能关闭 StreamReader
               using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath))
               {                  
                   // 从文件读取并显示行,直到文件的末尾
                   while ((line = sr.ReadLine()) != null)
                   {
                       //Console.WriteLine(line);
                       strData = line;
                   }                    
               }              
           }
           catch (Exception e)
           {
               // 向用户显示出错消息
               Console.WriteLine("The file could not be read:");
               Console.WriteLine(e.Message);
           }
           return strData;
       }

看见没?我们这边传入的参数就是生成文件的那个路径,注意,参数的类型是String表示文本的,而不是string表示字符串的,因为我再生成路径的时候就是用的String,所以这里对应起来;

接下来,我们来测试一下,看我们有没有读取文件成功,看cmd中是否会出现我们最初写入的那个字符串?我们在Main函数中调用方法,代码如下:


static void Main(string[] args)
       {
           string data = "我的数据要开始存入文件了,我好开心啊!覆盖了吗?好像覆盖了,真的覆盖了";
           String filePath = SavaProcess(data);
           string strData = fileToString(filePath);
           Console.WriteLine(strData);        
       }

运行结果如下:

一文搞懂C#实现读写文本文件中的数据

结果出现了最开始存的那个字符串;

【4】写入和读取过程完整代码


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SavaProcessToFile
{
class Program
{
/// <summary>
/// 保存数据data到文件的处理过程;
/// </summary>
/// <param name="data"></param>
public static String SavaProcess(string data) {
System.DateTime currentTime = System.DateTime.Now;
//获取当前日期的前一天转换成ToFileTime
string strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd");
//按照日期建立一个文件名
string FileName = "MyFileSend" + strYMD + ".txt";
//设置目录
string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir";
//判断路径是否存在
if(!System.IO.Directory.Exists(CurDir)){
System.IO.Directory.CreateDirectory(CurDir);
}
//不存在就创建
String FilePath = CurDir + FileName;
//文件覆盖方式添加内容
System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false);
//保存数据到文件
file.Write(data);
//关闭文件
file.Close();
//释放对象
file.Dispose();

return FilePath;
}

/// <summary>
/// 获取文件中的数据
/// </summary>
/// <param name="args"></param>
public static string fileToString(String filePath){
string strData = "";
try
{
string line;
// 创建一个 StreamReader 的实例来读取文件 ,using 语句也能关闭 StreamReader
using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath))
{
// 从文件读取并显示行,直到文件的末尾
while ((line = sr.ReadLine()) != null)
{
//Console.WriteLine(line);
strData = line;
}
}
}
catch (Exception e)
{
// 向用户显示出错消息
Console.WriteLine("The file could not be read:");
Console.WriteLine(e.Message);
}
return strData;
}

static void Main(string[] args)
{
string data = "我的数据要开始存入文件了,我好开心啊!覆盖了吗?好像覆盖了,真的覆盖了";
String filePath = SavaProcess(data);
string strData = fileToString(filePath);
Console.WriteLine(strData);
}
}
}

来源:https://www.cnblogs.com/zhuxiaoge/p/7094404.html

标签:C#,读写,文本文件
0
投稿

猜你喜欢

  • c语言switch反汇编的实现

    2023-06-29 03:38:17
  • 深入Android Browser配置管理的详解

    2021-09-11 20:48:54
  • Unity3D动态对象优化代码分享

    2023-12-22 09:38:24
  • SpringBoot使用Druid数据源的配置方法

    2023-08-19 19:52:11
  • C#使用FileStream复制一个任意文件

    2022-04-17 19:55:17
  • Java中String、StringBuffer、StringBuilder的区别详解

    2023-03-28 00:06:50
  • 利用java制作简单的音乐播放器

    2022-01-21 11:39:32
  • springboot跨域CORS处理代码解析

    2022-07-29 21:12:20
  • java动态口令登录实现过程详解

    2022-01-01 10:16:28
  • 在IDEA中 实现给main方法附带参数的操作

    2022-10-23 14:42:03
  • 浅谈C# 构造方法(函数)

    2021-11-23 08:01:49
  • 浅谈C#中List<T>对象的深度拷贝问题

    2022-12-16 13:09:10
  • IDEA 2021.1 的 Win 和 Mac 快捷键大全

    2023-02-27 13:01:28
  • Java代码精简之道(推荐)

    2023-07-28 02:00:05
  • Flutter app页面路由以及路由拦截的实现

    2023-06-23 14:21:18
  • springboot 启动项目打印接口列表的实现

    2023-08-29 02:38:44
  • 解决在for循环中remove list报错越界的问题

    2022-01-12 15:27:56
  • arthas jprofiler做复杂链路的调用分析

    2022-01-15 12:01:25
  • 基于java SSM springboot实现抗疫物质信息管理系统

    2021-12-01 13:46:34
  • spring boot整合netty的实现方法

    2021-11-17 04:28:03
  • asp之家 软件编程 m.aspxhome.com