读取和写入文本文件

< type="text/javascript"> loadTOCNode(2, 'summary'); Read a Text File 本文一节描述如何使用 StreamReader 类来读取文本文件。 Write a Text File (Example 1) Write a Text File (Example 2) 各节描述了如何使用 StreamWriter 类向文件写入文本。

读取文本文件

< type="text/javascript"> loadTOCNode(3, 'summary'); 下面的代码使用 StreamReader 类打开、 读取,并关闭该文本文件。 您可以将文本文件的路径传递给要自动打开文件 StreamReader 构造函数。 ReadLine 方法读取每行文本,并根据它读取递增到下一行将文件指针。 ReadLine 方法到达文件结尾时, 它将返回空引用。

  1. 在记事本中创建示例文本文件。 若要执行此操作,请按照下列步骤操作:
    1. 在记事本中粘贴以下文本:
      hello world
    2. 将文件另存为 Sample.txt。
  2. 启动 Microsoft Visual Studio。
  3. 文件 菜单上指向 新建 ,然后单击 项目
  4. 项目类型 ,下单击 Visual C# 项目 ,然后单击 模板 下的 控制台应用程序

    注意 在 Visual Studio 2005 或 Visual Studio 2008,单击 Visual C# 项目类型 ,下,然后单击 模板 下的 控制台应用程序
  5. Class1.cs 文件的开头添加以下代码:
    using System.IO;
    注意 在 Visual Studio 2005 或 Visual Studio 2008,默认的文件是 Program.cs。
  6. 下面的代码添加到 Main 方法:
    String line;
    try
    {
    //Pass the file path and file name to the StreamReader constructor
    StreamReader sr = new StreamReader("C:\\Sample.txt");

    //Read the first line of text
    line = sr.ReadLine();

    //Continue to read until you reach end of file
    while (line != null)
    {
    //write the lie to console window
    Console.WriteLine(line);
    //Read the next line
    line = sr.ReadLine();
    }

    //close the file
    sr.Close();
    Console.ReadLine();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
    块。
  7. 调试 菜单上单击 开始 编译并运行该应用程序。 按 ENTER 关闭控制台窗口。 控制台窗口将显示在 Sample.txt 文件
    Hello world
    中的内容

写文本文件 (示例 1)

< type="text/javascript"> loadTOCNode(3, 'summary'); 下面的代码使用 StreamWriter 类打开编写,并关闭该文本文件。 StreamReader 类以类似方式,您可以将文本文件的路径传递给要自动打开文件 StreamWriter 构造函数。 WriteLine 方法将一个完整的文本行写入文本文件。

  1. 启动 Visual Studio。
  2. 文件 菜单上指向 新建 ,然后单击 项目
  3. 项目类型 ,下单击 Visual C# 项目 ,然后单击 模板 下的 控制台应用程序

    注意 在 Visual Studio 2005 或 Visual Studio 2008,单击 Visual C# 项目类型 ,下,然后单击 模板 下的 CLR 控制台应用程序
  4. Class1.cs 文件的开头添加以下代码:
    using System.IO;
  5. 下面的代码添加到 Main 方法:
    try 
    {

    //Pass the filepath and filename to the StreamWriter Constructor
    StreamWriter sw = new StreamWriter("C:\\Test.txt");

    //Write a line of text
    sw.WriteLine("Hello World!!");

    //Write a second line of text
    sw.WriteLine("From the StreamWriter class");

    //Close the file
    sw.Close();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
    块。
  6. 调试 菜单上单击 开始 编译并运行该应用程序。 此代码创建名为 Test.txt 椹卞姩鍣 ㄤ 笂 C.打开 Test.txt 在文本编辑器 (如记事本) 中的文件。 Test.txt 包含两行文本:
    Hello World!!
    From the StreamWriter class

写文本文件 (示例 2)

< type="text/javascript"> loadTOCNode(3, 'summary'); 下面的代码使用 StreamWriter 类打开编写,并关闭该文本文件。 与前面的示例不同此代码将两个附加参数传递给构造函数。 第一个参数是文件路径和文件的文件名。 第二个参数 为 True ,指定打开该文件中追加模式。 如果在您第二个参数指定 False ,文件的内容将覆盖每次运行该代码。 第三个参数指定 Unicode ,以便 StreamWriter Unicode 格式文件进行编码。 您还可以指定下列编码方法对于第三个参数:

  • ASC11
  • Unicode
  • UTF7
  • UTF8

Write 方法与 WriteLine 方法的类似之处在于 Write 方法不会自动嵌入回车或换行 (CR/LF) 字符组合。 当您希望一次写入一个字符时,这是很有用。

  1. 启动 Visual Studio。
  2. 文件 菜单上指向 新建 ,然后单击 项目
  3. 项目类型 ,下单击 Visual C# 项目 ,然后单击 模板 下的 控制台应用程序

    注意 在 Visual Studio 2005 或 Visual Studio 2008,单击 Visual C# 项目类型 ,下,然后单击 模板 下的 控制台应用程序
  4. Class1.cs 文件的开头添加以下代码:
    using System.IO;
    using System.Text;
    注意 在 Visual Studio 2005 或 Visual Studio 2008,默认的文件是 Program.cs。
  5. 下面的代码添加到 Main 方法:
    Int64 x;

    try
    {
    //Open the File
    StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);

    //Writeout the numbers 1 to 10 on the same line.
    for(x=0; x < 10; x++)
    {
    sw.Write(x);
    }

    //close the file
    sw.Close();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
  6. 调试 菜单上单击 开始 编译并运行该应用程序。 此代码创建名为 Test1.txt 椹卞姩鍣 ㄤ 笂 C.打开 Test1.txt 在文本编辑器 (如记事本) 中的文件。 Test1.txt 包含单行文本:
    0123456789

瀹屾暣浠 g 爜鍒楄 〃

< type="text/javascript"> loadTOCNode(3, 'summary');

  • 读取文本文件
    //Read a Text File
    using System;
    using System.IO;

    namespace readwriteapp
    {
    class Class1
    {
    [STAThread]
    static void Main(string[] args)
    {

    String line;

    try
    {
    //Pass the file path and file name to the StreamReader constructor
    StreamReader sr = new StreamReader("C:\\Sample.txt");

    //Read the first line of text
    line = sr.ReadLine();

    //Continue to read until you reach end of file
    while (line != null)
    {
    //write the lie to console window
    Console.WriteLine(line);
    //Read the next line
    line = sr.ReadLine();
    }

    //close the file
    sr.Close();
    Console.ReadLine();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
    }
    }
    }
    块。
  • 写文本文件 (版本 1)
    //Write a text file - Version-1
    using System;
    using System.IO;

    namespace readwriteapp
    {
    class Class1
    {
    [STAThread]
    static void Main(string[] args)
    {
    try
    {

    //Pass the filepath and filename to the StreamWriter Constructor
    StreamWriter sw = new StreamWriter("C:\\Test.txt");

    //Write a line of text
    sw.WriteLine("Hello World!!");

    //Write a second line of text
    sw.WriteLine("From the StreamWriter class");

    //Close the file
    sw.Close();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
    }
    }
    }
    块。
  • 写文本文件 (版本 2)
    //Write a text file  - Version 2
    using System;
    using System.IO;
    using System.Text;

    namespace readwriteapp
    {
    class Class1
    {
    [STAThread]
    static void Main(string[] args)
    {

    Int64 x;

    try
    {
    //Open the File
    StreamWriter sw = new StreamWriter("C:\\Test1.txt", true, Encoding.ASCII);

    //Writeout the numbers 1 to 10 on the same line.
    for(x=0; x < 10; x++)
    {
    sw.Write(x);
    }

    //close the file
    sw.Close();
    }
    catch(Exception e)
    {
    Console.WriteLine("Exception: " + e.Message);
    }
    finally
    {
    Console.WriteLine("Executing finally block.");
    }
    }
    }
    }

疑难解答

< type="text/javascript"> loadTOCNode(3, 'summary'); 对于所有的文件操作是好的编程习惯自动换行内 尝试-catch-finally 块来处理错误和异常代码。 专门,您可能希望释放最后块中文件的句柄,使该文件不无限期锁定。 一些可能的错误包括一个文件不存在或已在使用中的文件。

【有关详细信息请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:

StreamReader 类
http://msdn2.microsoft.com/en-us/library/system.io.streamreader(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.io.streamreader(vs.71).aspx)

posted on 2010-01-27 21:17  GT_Andy  阅读(1290)  评论(0编辑  收藏  举报