C# открытие потока файлов, переданного в качестве аргумента (Nand2Tetris Project 7) - PullRequest
0 голосов
/ 08 апреля 2020

Что касается курса по Nand2Tetris, я получил проект 7 в книге и, будучи огромным новичком C#, я решил попробовать реализовать его на этом языке на практике. В частности, я пытаюсь следовать спецификации модуля Parser, и я уже озадачен первым шагом, который утверждает, что конструктор Parser имеет:

  • Аргументы: Входной файл / поток
  • Функция: открывает входной файл / поток и готовится проанализировать его

Пока моя основная программа (Program.cs):

namespace VM_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Program Main");

            FileStream inFileStream = File.Create(@"c:\Users\<USERNAME>\Documents\Nand2Tetris\nand2tetris\projects\07\VM 1\in.vm");

            Parser parser = new Parser(inFileStream);
        }
    }
}

Пока модуль Parser (Parser.cs):

namespace VM_1
{
    public class Parser
    {
        public Parser(FileStream inFileStream)
        {
            Console.WriteLine("Parser Constructor");
        }

        static void ParserMain()
        {
            Console.WriteLine("Parser Main");
        }
    }
}

Я не знаю, является ли это даже правильным способом структурирования программы C#, но мое приближение к Google привело меня к нему и к Program.cs и Parser. Кажется, что cs интегрируется без проблем.

Проблема заключается в том, что в модуле Parser я пытаюсь принять файловый поток в качестве аргумента, чтобы я мог открыть его в конструкторе. Поэтому в Program.cs я использую File.Create(), пытаясь зарезервировать File.Open() для модуля Parser. Это связано с тем, что, как указано в книге, в конструкторе Parser мне фактически нужно было открыть файловый поток, то есть я не должен открывать его в Program.cs. Но каждый C# пример открытия файла требует в качестве первого аргумента путь к строке, и я уже указал его в Program.cs. Поэтому я не уверен, как реализовать этот первый шаг в проекте. Любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 08 апреля 2020

Взгляните на документацию , которую вы уже можете читать / записывать в поток файлов, который у вас есть в результате File.Create. Если есть необходимость открыть уже созданный файл, просто используйте File.Open и поместите возвращенный FileStream в ваш Parser

...