Разработка приложений на языке C#. Полезные настройки. Особые спецификаторы формата, страница 33

      case "read":

        try

        {

           // Создайте читателя, то есть StreamReader

           // file =

        }

        catch (FileNotFoundException)

        {

           Console.WriteLine("\nFile: " + fileName + " not found");

           return null;

        }

        StreamReader sr = file as StreamReader; // Приведение типа: расплата за универсальность

                         string line = sr.ReadLine ();

                         if (!line.Equals (version))

                         {

                                Console.WriteLine("\nWrong file format: " + fileName);

                                sr.Close ();

                                return null;

                         }

        return file;

      case "write":

        try

        {

          // Создайте писателя, то есть StreamWriter

           // file =

        }

        catch (IOException)

        {

           Console.WriteLine("\nCan not write to: " + fileName);

           return null;

        }

        StreamWriter sw = file as StreamWriter;

        sw.WriteLine (version + "\n");

        return file;

      default: return null;

    }

  }

  public void Write ()

  {

    if (men.Count == 0)

    {

      Console.WriteLine ("List is empty");

      return;

    }

    WriteText ();

    WriteBinary ();

    WriteSoap ();

    WriteXml ();

    Console.WriteLine ("List has been stored in all formats");

    bNew = bModified = false;

  }

  void WriteText ()

  {

    fileName = Path.ChangeExtension (fileName, ".txt");

    // Обратитесь к методу FileOpen("write") и приведите тип (as StreamWriter)

    // StreamWriter sw =

    if (sw != null)

    {

      foreach (Man m in men)

        sw.WriteLine (m);

    }

    sw.Close ();

  }

  void WriteBinary ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  void WriteSoap ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  void WriteXml ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  public void Read ()

  {

    if (men.Count != 0)

    {

      Console.WriteLine ("Deleting current list");

      men.Clear ();

    }

    switch (ReadWriteMenu ())

    {

             default: return;

             case 't': ReadText ();       break;

             case 'b': ReadBinary ();  break;

             case 's': ReadSoap ();            break;

             case 'x': ReadXml ();             break;

             }

             bModified = false;

             Show ();

  }

  void ReadText ()

  {

    fileName = Path.ChangeExtension (fileName, ".txt");

    // Обратитесь к методу FileOpen("read") и приведите тип (as StreamReader)

    // StreamReader sr =

    if (sr == null)

    {

      Console.WriteLine ("Could not open: " + fileName);

      return;

    }

    Console.WriteLine ("Reading from: " + Path.GetFileName (fileName));

    string line;

             while ((line = sr.ReadLine ()) != null)

             {

                   if (line == "")

                         continue;

                   Man m;

                   switch (line[0])

                   {

                   case 'S': /* Ваш код */ break;

                   case 'P': /* Ваш код */ break;

                   default: return;

                   }

                   string[] tokens = // Разбейте строку на подстроки с помощью метода Split

                   m.Read (tokens); // Здесь работает полиморфизм поздего связывания

                   men.Add (m);

             }

             sr.Close ();

  }

  void ReadBinary ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  void ReadSoap ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  void ReadXml ()

  {

    // Создайте код, как рассказано ниже. Не забудьте закрыть файл

  }

  public void Quit ()

  {

             if (bModified)

             {