从0开始学C# - part14 文件的输入与输出

文件的输入和输出在和实际业务的关联挺大的,例如程序运行要写个日志文件,就要用到输出。程序里打开某个文件读取信息,就要用到输入。
C#对文件的操作用到IO命名空间,即在代码中要加入using System.IO;,这里面包含了很多与I/O有关的类,我重点学习以下几类:

  • FileStream类
    可以创建一个FileStream对象来新建一个文件,或者打开一个已有文件,语法如下:
    FileStream <object name> = new FileStream(<file_name>, <FileMode Enum>, <FileAccess Enum>, <FileShare Enum>);

FileMode枚举定义了各种打开文件的方法,最常用的是OpenorCreate方法,即指定操作系统应打开一个已有的文件。如果文件不存在,则用指定的名称创建一个新的文件打开;
FileAccess枚举的成员为Read, ReadWrite, Write;
FileShare与文件共享有关,一般不常用。
还是看下例子

FileStream f = new FileStream("test3.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);  
//若没有test3.dat,则建立一个,若有,则打开。文件可读可写
for(int i =1; i<=10; i++)
{
  f.WriteByte((byte)i);  //在test3.dat文件中写入1,2,3...10
}
f.Position = 0;   //这个Position属性非常重要,=0代表从头开始进行接下去的读写操作
for (int i = 0; i <= 2; i++)
{
  Console.Write(f.ReadByte() + " ");
}
f.Close();

编译后的结果

1  2  -1

为什么会有-1呢?因为Position到0后,只能读到1和2,第三个位置是空,而ReadByte()这个方法读到空的位置时返回的默认值是-1
如果没有f.Position=0这句话,则结果为-1 -1 -1

  • StreamReader类
    例如在D盘有个test.txt文件,我们想一行行的读取这个文件上的字符串。
StreamReader sr = new StreamReader("D:/test.txt"); //新建一个StreamReader对象,读取test.txt
string line;
while (line = sr.ReadLine()) != null)  //这里要注意,不能把line=sr.ReadLine()的赋值语句放到while循环语句之外,否则会一直读取文本文件的第一行字符
{
  Console.WriteLine(line);
}

最方便的是ReadToEnd()方法,可以把文件中的所有字符读出来。
例如上面这个例子可以这样改写

StreamReader sr = new StreamReader("D:/test.txt"); 
Console.WriteLine(sr.ReadToEnd());
  • StreamWriter类
    就是向文件中写入文本数据
StreamWriter sw = new StreamWriter("test2.txt")
sw.Writeline("take it easy"); //每行的内容,如果有N行就写N个WriteLine()方法
sw.Close();  //一定要有这个Close(),否则只是新建一个.txt文件,里面没有任何内容

还可以使用File的方法CreateText()

StreamWriter sr = File.CreateText("test3.txt");
sr.WriteLine("This is my file." +
"sucks");
sr.WriteLine("I can write ints {0} or floats {1}, and so on.",1, 4.2);
sr.Close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值