如何编写一个C#定制方法,该方法将用户输入内容保存为文本文件,然后再读取该文件的另一种方法?

时间:2018-07-24 05:54:15

标签: c#

编写一个使用两种自定义方法的程序: 自定义方法1应该接受用户输入并将其保存到文本文件中。 自定义方法2应该打开包含用户输入数据的文本文件,并将其显示在屏幕上。

如果不允许用户将文件保存在目录中,则您的程序不会崩溃。

如果您的程序无法打开用户文件,则它应该不会崩溃。

我目前有

public class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Enter text to save:");
        string textInput = Console.ReadLine();

        using (StreamWriter writer = new StreamWriter("Final.txt"))
        {
            writer.WriteLine(textInput);
        }

        string line = "";
        using (var sr = new StreamReader("Final.txt"))
        {
            while ((line = sr.ReadLine()) != null)
            {
                Console.WriteLine("The Saved text is:");
                Console.WriteLine(line);
            }
        }
    }
}

我认为这涵盖了前两个选项,但是我在识别其他两个选项时遇到了问题。

我对编码是完全陌生的,所以我对应该做什么完全不满意。任何提示将不胜感激。

关于

1 个答案:

答案 0 :(得分:0)

首先,您不需要使用StreamWriter,只需使用File.WriteAllText就可以将文本写入文件,这解决了您似乎遇到的问题:文件未关闭正确地


第二,在显示的代码中,您没有处理应该处理的可能的错误:

  1. 不允许用户写入或读取指定的目录

  2. 无法打开文件。

如果不允许用户写入文件或从文件中读取文件,则会引发System.UnauthorizedAccessException。如果无法打开文件,则会抛出System.IOException

所以我们要做的是通过用{p>包围对File.WriteAllText的调用来处理这些异常。

try
{
    File.WriteAllText(...);
}
catch(UnauthorizedAccessException)
{
    ...
}
catch(IOException)
{
    ...
}

我们也对File.ReadAllText做同样的事情。


完成任务的代码:

private string fileName = "Final.txt";

public void CustomMethod1()
{
    Console.WriteLine("Enter the text to save: ");
    string textInput = Console.ReadLine();

    try
    {
        File.WriteAllText(this.fileName, textInput);
    }
    catch (UnauthorizedAccessException)
    {
        Console.WriteLine($"You are not allowed to save files in the directory '{this.fileName}'.");
    }
    catch (IOException e)
    {
        Console.WriteLine($"The error '{e.Message}' occured while saving the file.");
    }
}

public void CustomMethod2()
{
    if (!File.Exists(this.fileName))
    {
        Console.WriteLine($"Cannot find the file '{this.fileName}'.");
    }

    try
    {
        Console.WriteLine("The saved text is: ");
        Console.WriteLine(File.ReadAllText(this.fileName));
    }
    catch (UnauthorizedAccessException)
    {
        Console.WriteLine($"You are not allowed to read files from the directory '{this.fileName}'.");
    }
    catch (IOException e)
    {
        Console.WriteLine($"The error '{e.Message}' occured while opening the file.");
    }
}

public static void Main(string[] args)
{
    Program program = new Program();
    program.CustomMethod1();
    program.CustomMethod2();
}