若要打开一个文件,您需要操作在 IO 命名空间中找到的若干对象。感兴趣的第一个类是 File 类,它定义处理文件的常规方法和规则。File 类有若干不同的打开文件的方法,但对于该特定方案,最适合的是 OpenText。这是因为该特定方法返回一个 StreamReader 对象,它对于从标准文本文件读取信息行是很理想的。以下代码展示使用 OpenText 方法,向该方法传递您要打开的文件的名称。指定文件时可以包含完全限定的路径。 
StreamReader din = File.OpenText ("words.txt");下面介绍其他一些打开文件的方法。每个备选示例都可以替换前面的示例,尽管使用该代码时需要进行更多一点工作来翻译返回给 StreamReader 对象的值。这是因为每种方法都返回一个 Stream 对象,该对象可用于构造 StreamReader 的新实例。虽然可以使用 Stream 从文件读取信息,但 StreamReader 可通过提供更丰富的方法集来减轻您的工作负荷,您可以使用这些方法从已打开的文件获取信息。 
// Use OpenRead which opens a file in read-only mode
StreamReader din = new StreamReader( File.OpenRead("words.txt") );// Use Open, which accepts the FileMode to open the file in.
// This is a request FileMode.Open, but an alternative would have been Create, or OpenOrCreate
StreamReader din = new StreamReader( File.Open("words.txt", FileMode.Open) );在打开文件后,将需要从中获取信息。如前面所提到的,StreamReader 适合该目的,因为它提供 ReadLine 方法,该方法使您可以一次获取一行。当然,您需要知道文件中信息的存储方式,以便能够予以正确解释。本示例中,输入文件由单个单词的信息行组成,使得解释更容易。 可以将所检索的信息放入若干数据存储区。本示例中,您可以直接将每行放入一个字符串,但这并不是通常会发生的情况。数组是可能的解决方案,但没办法预先知道将读取多少行。这将不得不不断调整数组大小或重新生成数组(将需要额外工作)。本方案中理想的解决方案是选择一个 ArrayList,它是一个集合,可在其上直接使用 Add 方法添加更多元素。这可节省大量精力。 下面的示例从已打开的文件读取每个新行,并将每条新信息放入一个 ArrayList。可以通过检查读取的最后一条信息是否为空来检测文件的结尾。如果为空,则已到达文件结尾(注意空行并不等于空)。 
String str;
ArrayList al = new ArrayList();       //make our temporary storage object//loop through all the rows, stopping when we reach the end of file
do {
str = din.ReadLine(); if (str != null) {
al.Add(str);          //add each element to our ArrayList
}
} while ( str != null );看了上面的代码和说明,相信你大概可以知道第一个问题的解决方法了----既然有ReadLine,当然也有WriteLine
至于第二个问题,你可以将ReadLine放进一个for循环(其中din.lines是此文档的行数):
for(int i=1;i<din.lines||i=din.lines;i++)
{
    if(i%5==0)
    {
         din.ReadLine();
    }
}