我们在前一个练习中已经了解了如何在C#控制台程序(console)中读取用户的输入。现在我们要学习如何从一个文件中读取内容。在下面的练习中,你要格外小心。关于文件的操作,一不小心会损失你的重要文件。
在这个练习中我们首先要创建一个纯文本文件ex10_sample.txt 放到c盘的Exercise10目录下。通常c盘下是没有Exercise10目录的,请先建立这个目录。我们的C#程序会读取这个纯文本文件的内容。如果你不知道如何创建纯文本文件,请首先在网上查一下。如果查不到,可以联系我哦。
这个文件的内容如下:
1. 这是我用c#读取的第一个文件
2. 我和David学习C#,感觉进步很快
3. 我想介绍我的朋友也和David学习C#
我们想实现的功能是用我们的程序打开一个文件,然后把它的内容输出出来。但是我们不想把文件的名字ex10_sample.txt写死在程序里边。我们想在程序运行的时候,让用户输入要打开的文件的名字。
你创建一个项目。解决方案名称为Sloution10,项目名称为Exercise10,项目类型为控制台程序。
点击Program.cs. 在Main方法中加入这些代码。
在这个新的程序中,我们引入一些对我们来说很新的功能。我在这里给大家介绍一下。
15,16行代码:让用户输入要打开的文件名称。文件我们要求放在c盘的exercise10目录下。
22行-28行代码:使用StreamReader打开c盘的exercise10目录下用户指定的文件,StreamReader是C#的一个用来读取文件的一个类。我们需要给它传递两个参数。一个参数是文件的所在目录和文件名。另一个参数是这个文件的字体所用的编码。using(文件){ .....}. 这种语法当遇到左边那个大括号时,会自动打开文件。当遇到右边那个大括号时会自动关闭文件。这样c#就帮助我们自动打开和关闭文件了。不用我们再操心了。
25行代码:将文件中的内容全部读出来,赋值给一个字符串。当文件很大时,这种方法需要占用很大的内存空间。还有其他一行一行读取文件内容的方法,你可以在网上查一下。如果找不到,可以联系我哦。
26行代码: 将字符串中的内容输出到dos窗口中。
20,30行代码:
try {。。。。。}
catch (Exception e)
{......}
是C#中的一种语法,用来处理程序中的异常情况。例如我们程序,文件名如果用户提供的不对,就会找到文件。这时候我们的catch部分就会抓到这个异常。我们就可以在catch后面的大括号里进行相应的处理。在我们的程序里我们会在dos窗口输出一句话,提示用户文件找不到或打不。
运行结果
练习
1. 为每一条语句加上注释,解释它的功能。如果不明白,可以现在网上查询。找不到借口,记得咨询我。
2. 你自己创建一个新的文本文件和office word文件放在c盘的exercise10目录下,用你的程序打开它们。
3. C#中还有其他读取文件的方法,试着用其他方法读取一下文件
4. 试着理解一下文件编码的概念。在网上搜索一下吧。
5. 如果不指定StreamReader的编码格式为Encoding.Default。你可以删掉22行StreamReader的第二个参数Encoding.Default,看一下,文件的内容还会正常显示吗?