一文搞懂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);
}
运行结果如下:
很显然,在相关目录下,生成了想对应的文件;我们在看看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);
}
运行结果如下:
结果出现了最开始存的那个字符串;
【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#,读写,文本文件
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
MyBatis在注解上使用动态SQL方式(@select使用if)
2023-09-24 06:52:55
C#如何使用Task执行异步操作
2023-01-12 03:34:41
java算法之Math.random()随机概率玩法实例演示
2023-11-28 23:32:17
Java数字格式类(NumberFormat类和DecimalFormat类)用法详解
2022-11-14 14:54:02
![](https://img.aspxhome.com/file/2023/1/68711_0s.png)
详解Spring框架下向异步线程传递HttpServletRequest参数的坑
2021-05-31 04:45:21
java循环练习的简单代码实例
2023-11-23 21:20:28
java oshi如何查看cpu信息
2023-01-06 21:16:39
Java编码摘要算法实例解析
2022-07-21 23:33:29
如何用注解的方式实现Mybatis插入数据时返回自增的主键Id
2022-02-05 09:29:55
![](https://img.aspxhome.com/file/2023/5/69955_0s.jpg)
java 文件上传到读取文件内容的实例
2023-11-09 22:00:27
Java动态规划之硬币找零问题实现代码
2023-01-23 20:37:38
C#模拟实现抽奖小程序的示例代码
2021-08-27 22:19:17
![](https://img.aspxhome.com/file/2023/0/78130_0s.jpg)
以Java代码为例讲解设计模式中的简单工厂模式
2023-02-09 15:14:17
![](https://img.aspxhome.com/file/2023/7/79157_0s.jpg)
Struts2实现文件上传功能实例解析
2023-11-04 04:56:13
![](https://img.aspxhome.com/file/2023/6/58836_0s.png)
java isInterrupted()判断线程的实例讲解
2023-07-21 01:45:53
java程序设计语言的优势及特点
2022-08-16 09:12:57
Java 数据结构与算法系列精讲之环形链表
2023-04-27 22:37:07
![](https://img.aspxhome.com/file/2023/2/81362_0s.gif)
java实现简单单链表
2023-10-30 09:45:46
![](https://img.aspxhome.com/file/2023/2/58722_0s.jpg)
java的引用类型的详细介绍
2022-05-15 09:34:40
RxJava+Retrofit+Mvp实现购物车
2022-03-22 16:24:48
![](https://img.aspxhome.com/file/2023/7/64957_0s.gif)