【问题标题】:C# opening a file stream passed as argument (Nand2Tetris Project 7)C# 打开作为参数传递的文件流 (Nand2Tetris Project 7)
【发布时间】:2020-04-08 16:59:48
【问题描述】:

关于 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# 程序的正确方法,但我的谷歌搜索已引导我找到它,并且 Program.cs 和 Parser.cs 似乎可以毫无问题地集成。

问题在于,在 Parser 模块中,我试图将文件流作为参数接收,以便可以在其构造函数中打开它。因此,在 Program.cs 中,我使用 File.Create(),试图为 Parser 模块保留 File.Open()。这是因为,如书中所述,在 Parser 的构造函数中,我必须实际打开文件流,也就是说,我不应该在 Program.cs 中打开它。但是每个打开文件的 C# 示例都需要一个字符串路径作为它的第一个参数,我已经在 Program.cs 中提供了它。所以我不确定如何在项目中实施这第一步。任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: c# nand2tetris


    【解决方案1】:

    看看documentation ,您已经可以读取/写入您拥有的文件流,这是File.Create 的结果。如果需要打开已经创建的文件,只需使用File.Open 并将返回的FileStream 放入您的Parser

    【讨论】:

    • 我知道,我也可以将一个字符串传递给解析器并在那里打开文件,但我正在尝试按照说明进行操作。他们指定解析器的构造函数应该接收文件/流作为参数,然后在该构造函数中打开它。
    猜你喜欢
    • 2017-10-09
    • 2016-08-17
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多