你的位置:首页 > ASP.net教程

[ASP.net教程]10 在C#中读取文件

我们在前一个练习中已经了解了如何在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,看一下,文件的内容还会正常显示吗?