c#:我需要帮助为每个事件创建具有唯一文件名的唯一文本文件

c#:我需要帮助为每个事件创建具有唯一文件名的唯一文本文件,c#,streamwriter,C#,Streamwriter,贾贾。伙计们,我的第一篇文章太广泛了,让我再试一次。我认为在寻求帮助时始终保持礼貌并充分表达自己的动机是很重要的,所以一句话并不是最好的方式,但我会适应在这个论坛上的做法。把我的问题分成几个模块可能会有帮助 我用easylanguage编写了这段代码,每次发生四种不同类型的事件中的一种时,它都会生成一个具有唯一文件名的唯一文本文件(每个单独的文本文件都作为自己单独的日志条目)。我需要将此代码转换为c#(我将在ninjatrader交易平台中使用此代码),使用streamwriter或任何其他c

贾贾。伙计们,我的第一篇文章太广泛了,让我再试一次。我认为在寻求帮助时始终保持礼貌并充分表达自己的动机是很重要的,所以一句话并不是最好的方式,但我会适应在这个论坛上的做法。把我的问题分成几个模块可能会有帮助

  • 我用easylanguage编写了这段代码,每次发生四种不同类型的事件中的一种时,它都会生成一个具有唯一文件名的唯一文本文件(每个单独的文本文件都作为自己单独的日志条目)。我需要将此代码转换为c#(我将在ninjatrader交易平台中使用此代码),使用streamwriter或任何其他c#解决方案,这些解决方案允许我生成具有动态创建的文件名的唯一文本文件,其中包括一些字符串输入、变量以及格式类似于以下内容的日期和时间:
[注意:主目录、文件名加符号标记器和组名是由用户定义的字符串输入,而案例号是由程序计算的字符串变量。我使用此信息确保文件名是唯一的,并按符号标记器和生成时间对文件进行排序。]


很好,我希望我最初问题的这个版本将更容易理解和管理。谢谢大家,大家好。

我不会试图破译你们的整个帖子。如果问题是如何在文件中添加一行(如果文件不存在则创建该行),那么在c语言中非常简单:

private void WriteFile(string text)
    {
      // lock a generic object to ensure only one thread is accessing the following code block at a time
      lock (lockObj)
      {
          string filePath = Path.Combine(@"C:\ntlogs\",$"{DateTime.Now.ToString("yyyyMMdd HHmmss")}.txt");
          File.AppendAllText(filePath, text);
      }

如果您还面临其他特定问题,则创建一个单独的问题,并在没有所有附加信息的情况下具体询问该问题

这是否回答了您的问题?是否有特殊原因需要使用streamwriter,而不能使用更像Csharpian的东西,如
System.IO.File.writeAllines(路径,列表)
System.IO.File.WriteAllText(路径,字符串)
?您好,欢迎来到SO-您的帖子的前11行可能会被删除-我敢肯定,如果您考虑一下,您可以大大缩小上述帖子的大小。请尽量简明扼要,这样我们就更容易看到你想做什么。上面的帖子可以归结为“在c语言中,如何在文件中添加一行文本?”谢谢。如果有更好的方法在c#中创建这些文件,我将研究它们,我想使用streamwriter,因为我收到了使用它的建议,并且我已经设法使它在我以前使用的平台上工作。不过,我现在将阅读推荐的命令。他们询问动态创建文件名的问题,这让我觉得他们编写的是文件而不是行,但这看起来不错,这让我有点吃惊。必须喜欢
System.IO.File
namespace=]它每秒创建一个新文件,这似乎很奇怪。我会质疑它的有效性。另外,如果你想要它的日志记录,我可以强烈推荐通过nuget提供的log4net程序集。写日志文件不费吹灰之力。有关于如何使用iThanks的教程。我会研究你的所有建议,但我想生成一个唯一的文件,每个事件都有一个唯一的文件名,多次附加一个文件是没有用的。而且每周只有5到10个事件,我用几秒钟的时间来确保文件名是唯一的。它们每秒只有一次是唯一的,所以你需要确保你的事件不会在一秒钟内发生两次-但是如果发生了,appendalllines只会在同一个文件中添加两次。正如我所说,使用log4net进行日志记录将完成所有这些工作。如果需要,它将创建一个带有时间戳的日志文件条目。
private void WriteFile(string text)
    {
      // lock a generic object to ensure only one thread is accessing the following code block at a time
      lock (lockObj)
      {
          string filePath = Path.Combine(@"C:\ntlogs\",$"{DateTime.Now.ToString("yyyyMMdd HHmmss")}.txt");
          File.AppendAllText(filePath, text);
      }