Консольное приложение используется для сбора данных и сохранения их в текстовом файле ... Как это сделать? - PullRequest
0 голосов
/ 05 марта 2010
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ABC
{
    class Program
    {
        static void Main(string[] args)
        {

            string userInput;
            List<string> a = new List<string>();


            do
            {
                Console.WriteLine(">>> NAME <<<");
                Console.WriteLine("1 - Add");
                Console.WriteLine("0 - Exit");

                //get user's choice/input
                userInput = Console.ReadLine();

                //actions to take after user's choice/input
                switch (userInput)
                {
                    case "1":
                        //Add list to store info
                        Console.WriteLine("B");

                        //capture details
                        a.Add("Name: ");
                        a.Add("Surname: ");
                        a.Add("Address: ");
                        a.Add("Telephone: ");
                        a.Add("Cell: ");
                        a.Add("Email: ");
                        a.Add("Web: ");
                        a.Add("Date: ");

                        foreach (string i in a)
                        {
                            Console.Write(i);
                            Console.ReadLine();
                        }
                        FileStream fs = new FileStream("myfile.txt",FileMode.Create,FileAccess.ReadWrite);
                        StringBuilder sb = new StringBuilder();
                        foreach (string str in a)
                            {
                            StreamReader sr = new StreamReader();
                            {
                                sb.AppendLine(str.ToString());
                                sb.Append(sr.ReadToEnd());
                                sb.AppendLine();
                            }
                        }
                        StreamWriter sw = new StreamWriter(@"myfile.txt");
                        sw.Write(sb.ToString());

                        break;
                    case "0":
                        Console.WriteLine("BYE!!!");
                        break;
                    default:
                        Console.WriteLine("{0} is not a valid choice", userInput);
                        break;
                }
                //allow user to see results
                Console.Write("press 'Enter' to continue...");
                Console.ReadLine();
                Console.WriteLine();
            }
            // Keep going until the user wants to quit 
            while (userInput != "0");
        }
    }     
 }

Ответы [ 2 ]

0 голосов
/ 05 марта 2010

У вас одновременно открываются FileStream и StreamWriter для одного и того же файла, это приведет к ошибке.

Удаление строки

FileStream fs = new FileStream("myfile.txt",FileMode.Create,FileAccess.ReadWrite);

и замена

StreamWriter sw = new StreamWriter(@"myfile.txt");
sw.Write(sb.ToString());

с

using (TextWriter tw = File.CreateTex("myfile.txt")) {
    tw.Write(sb.ToString());
}

должен сделать трюк.

Редактировать: Ваша программа делает именно то, что вы сказали ей делать.

Итак, вот функциональность, которую я считаю , которую вы хотите достичь:

кейс "1": // Добавить список для хранения информации Console.WriteLine ( "В");

//capture details
a.Add("Name: ");
a.Add("Surname: ");
a.Add("Address: ");
a.Add("Telephone: ");
a.Add("Cell: ");
a.Add("Email: ");
a.Add("Web: ");
a.Add("Date: ");

StringBuilder sb = new StringBuilder();
foreach (string i in a)
{
    Console.Write(i);
    var entry = Console.ReadLine();
    sb.AppendFormat("{0}{1}\n", i, entry);
}

using (TextWriter tw = File.AppendTex("myfile.txt")) {
    tw.Write(sb.ToString()); 
    tw.WriteLine("-------------------------------------------------");
}

break;
0 голосов
/ 05 марта 2010

Я не запускал твой код, но:

а) не забудьте close файл.

b) похоже, что вы всегда добавляете эти "поля данных" в свой список (делайте это один раз, очищайте его каждый раз, когда добавляете новый набор)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...