bangashizsc Ответов: 2

Как мне поместить этот код в streamwriter и streamreader


Как мне поместить этот код в streamwriter и streamreader? Я испробовал несколько техник, но ничего не вышло.

вот чего я хочу добиться:
идентификатор;
1
имя:
Джонс
зарплата:
1200

идентификатор:
2
имя:
шторм
зарплата:
1300

идентификатор:
3
имя:
бел
зарплата:
1800

но сначала я должен записать это в файл rekisteri.txt. Затем streamwrite его и, наконец, streamread его.

Что я уже пробовал:

использование системного ввода-вывода;

namespace ConsoleApp1
{
    class Ohjelma
    {
        public static void Main(string[] args)
        {
            string data = "E:\\visual studio 2017\\ConsoleApp1\\rekisteri.txt";

            FileStream fOutStream = File.Open(data, FileMode.Append, FileAccess.Write);

            StreamWriter sWriter = new StreamWriter(fOutStream);

            int id;
            string name;
            float salary;

            label:

            Console.WriteLine("Give id: ");
            id = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Give name: ");
            name = Convert.ToString(Console.ReadLine());

            Console.WriteLine("Give salary: ");
            salary = float.Parse(Console.ReadLine());

            
            if (id <= 3)
            {
                goto label;
            }
            else
            {
                Console.WriteLine();
            }
            Console.ReadLine();


            /*StreamReader code here*/
            
        }
    }
  
}        

2 Ответов

Рейтинг:
2

Richard MacCutchan

Вы только записываете данные на консоль, вам также нужно записать их на свой компьютер. sWriter течение. Когда больше нет данных, вам нужно закрыть поток. Чтобы прочитать его обратно, вы просто используете StreamReader.

Видеть Класс StreamWriter (System.IO) | Microsoft Docs[^] и Класс StreamReader (System.IO) | Microsoft Docs[^].


Рейтинг:
1

OriginalGriff

Для начала избавьтесь от ярлыков и goto - вы должны использовать петлевую конструкцию типа for или while вместо. На самом деле, забудьте goto даже существует пару лет - к тому времени вы поймете, когда это уместно, чего почти никогда не бывает в "нормальном" коде.

Вы также никогда не должны использовать методы преобразования при вводе пользователем - они делают ошибки, и это немного раздражает, когда ваше приложение выходит из строя из-за неправильного ключа.

int id;
while (true)
   {
   Console.Write("Enter ID: ");
   if (int.TryParse(Console.ReadLine(), out id))
      {
      break;
      }
   Console.WriteLine($"\"{val}\" is not a valid integer.");
   }
Это гораздо более дружелюбно!

Напишите метод, который принимает четыре параметра:
private static void WriteLine(StreamWriter sw, int id, string name, float salary)
   {
   }
И заставьте его записать значения в поток. Таким образом, он более "организован" и понятен для чтения. И тривиально: StreamWriter имеет WriteLine метод.

Тогда чтение назад тоже довольно просто - просто повторите цикл по файлу, пока в нем не закончатся данные, и прочитайте каждый элемент обратно. Используйте то же самое TryParse код для преобразования значений teh, и это довольно просто.