1.创建文件
根路径自己决定,如果是一个项目一定有相关的API获取该项目所在硬盘的完整物理路径。创建文件时一般先会判断是否存在指定的文件,没有则创建,执行以下代码后可查看D盘根路径。
string path = "D:\\";
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff")+".txt";//以时间戳作为文件名
File.Create(path + fileName);//若存在指定的文件会覆盖原有文件
2.txt文件写入
文件写入有多种模式,这里介绍用的比较多的Append模式,Append模式只能在行尾添加数据且不允许读取,执行以下代码查看效果
FileStream fs = new FileStream("D:\\201905231220084594.txt",FileMode.Append);//若指定文件不存在会抛出异常
StreamWriter sw = new StreamWriter(fs);
sw.Write("测试代码写入操作1");//指定Append模式不允许进行读取,且写入的数据从文件尾开始
sw.WriteLine("测试代码写入操作2");//写完自动加个换行
sw.Write("测试代码写入操作3");
sw.Flush();
sw.Close();
fs.Close();
3.txt文件读取
读取文件时有一个偏移指针,通过调用Peek方法向后移动,若到达尾部返回-1
FileStream fs = new FileStream("D:\\201905231220084594.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs);
Console.WriteLine(sr.ReadToEnd());//从头读到尾,还有读取一行的,读取一位的,
sr.Close();
fs.Close();
Console.Read();
4.ini文件读取
其实txt文件没有什么好说的,程序需要的数据一般都会用配置文件来保存,比如ini或者xml。下面着重介绍这两个类型的文件读写。
(1)创建ini文件,方法同创建txt文件,执行以下代码
string path = "D:\\";
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffff")+".ini";
File.Create(path + fileName);//若存在指定的文件会覆盖原有文件
(2)写入ini文件
简单说下ini文件的概念。INI文件由节、键、值组成,可以有注释,分号后面的这一行均为注释,如以下形式
;这是section1
[section1]
key1=value1
key2=value2
;这是section2
[section2]
key1=value1
key2=value2
section1和section2就是节,key为键,value为键对应的值
注意点: 不同节下可以有相同的键
相同节下若存在多个相同的键,只有第一个键有效。
若存在多个相同的节,只有第一个节有效
这些影响并不会使程序出现异常
static void Main(string[] args)
{
WritePrivateProfileString("section1", "key1", "value1", "D:\\201905231333350821.ini");
WritePrivateProfileString("section1", "key2", "value2", "D:\\201905231333350821.ini");
WritePrivateProfileString("section2", "key1", "value1", "D:\\201905231333350821.ini");
WritePrivateProfileString("section2", "key2", "value2", "D:\\201905231333350821.ini");
}
/**
* 调用windowsAPI实现读写ini配置文件
* 参数说明:
* section:写入指定的节,若没有则自动创建
* key:键名
* val:值
* filePath:指定ini文件的路径
*/
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
/***
* 参数说明
* section:指定要读取的节
* key:指定要读取的键
* defVal:若没有读取到值,则返回值为该参数值
* retVal:实际的返回值由该参数保存
* size:指定返回值的最大长度,若key1=value1,则长度至少为12才能读取完整
* filePath:指定读取的ini文件路径
*/
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath);
(3)读取ini配置文件
StringBuilder sb = new StringBuilder();
GetPrivateProfileString("section1", "key1", "defaultValue", sb, 255, "D:\\201905231333350821.ini");
Console.WriteLine(sb);
GetPrivateProfileString("section1", "key3", "defaultValue", sb, 255, "D:\\201905231333350821.ini");
Console.WriteLine(sb);
Console.Read();
5.xml文件读写
xml的说明在我的另一个博客上有很详细的说明,这里不再赘述https://blog.csdn.net/listennerBGM/article/details/88874757