【问题标题】:writing from two engines into same file从两个引擎写入同一个文件
【发布时间】:2016-08-08 20:49:31
【问题描述】:

您好,我有一个 cvs 文件被读取,并调用和 API 来获取信息,然后将其写入文件,如下所示。目前只有一个分隔记录类。

        public class EE
        {
            [FieldOrder(1)]
            public string Name;
            [FieldOrder(2)]
            public string Description;
            [FieldOrder(3)]
         }


....creating engine....

  using (enginev2.BeginWriteFile(@"C:\Update\" + fileName))
                {
                    foreach (EEEEoutput in arrayEmployees)
                    {
                        enginev2.WriteNext(EEoutput);
                    }

            }

现在我必须创建另一个分隔记录,因为它具有不同的结构,但我需要将它写入同一个文件。这意味着让两个不同的文件助手引擎一个接一个地写入同一个文件。这可能吗?

为了举例,我已经简化了字段的数量。它们都非常不同,并且有很多领域。

public class EETravel
        {
            [FieldOrder(1)]
            public string TrxType;
            [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)]
            [FieldOrder(2)]
            public string EmployeeID;
    }

  using (engineTravel.BeginWriteFile(@"C:\Update\" + fileName))
                {
                    foreach (Employees_Travel EEtravel in arrayTravel)
                    {
                        engineTravel.WriteNext(EEtravel);
                    }

                }

当我拥有上面的代码时,它完全超越了第一个引擎编写的内容。所以我的问题是,如何让第二个引擎在第一个引擎停止的地方继续工作,然后更新文件?

谢谢你

【问题讨论】:

  • 首先,如果这是在多线程代码中,您将需要围绕写作进行一些锁定。其次,打开文件进行追加。第三,在写入之前寻找文件末尾以维护其他代码的更新。
  • 谢谢你,我使用了 BeginAppendToFile 并且成功了。

标签: c# csv filehelpers


【解决方案1】:
 using (engineTravel.BeginAppendToFile(@"C:\Update\" + fileName))
                {
                    foreach (EETravel EEtravel in arrayTravel)
                    {
                        engineTravel.WriteNext(EEtravel);
                    }

                }

在第二个引擎中使用了.BeginAppendToFile,它从另一个引擎停止的地方开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2011-03-13
    • 1970-01-01
    • 2017-06-24
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多