【问题标题】:How do I increment the number in a file I create each time a new file is create?每次创建新文件时,如何增加我创建的文件中的数字?
【发布时间】:2012-01-04 14:16:39
【问题描述】:

我正在创建一个文件转换控制台应用程序,以使用 Visual C# 将购物车导出生成的 xml 文件更改为 x12 850 EDI txt 文件。我需要创建的 txt 文件中的一个数字加一,然后将这个新数字存储在应用程序本身中,以便下一个转换的文件在创建的最后一个文件之后增加一个,并继续转换每个其他文件。过去实现这一目标的方法是什么?谢谢。

轮胎

【问题讨论】:

  • 你试过什么?你有什么困难?这个数字是否必须在重新启动时不断增加?跨服务器?
  • 我曾考虑过使用int和increment的方法,但不知道如何保留最后一个递增的数字。我尝试增加一个数字字符串,但我无法修改字符串以保存新变量。是的,这个数字需要在重新启动时不断增加。我打算用任务调度程序调用这个应用程序来批量转换文件。至于跨服务器,我不完全理解这个问题。我很抱歉。
  • 基本上询问您是否在多台计算机上运行该应用程序,如果是,此数字是否需要在它们之间不断增加。

标签: xml visual-studio-2008 c#-4.0 increment edi


【解决方案1】:

假设程序只有一个实例,并且该值需要在应用程序(可能还有计算机)重新启动时保持:

  • 使用文件存储计数器的当前值
  • 应用程序启动时,读取该值
  • 根据需要增加内存中的值(在int 或您使用的任何内容中)
  • 在应用程序退出之前,用新值覆盖文件

【讨论】:

  • 感谢您的帮助。这将完成我想要的。我希望将其全部保留在应用程序的代码中,但这可能是不可能的。
【解决方案2】:

这取决于很多事情。

主要问题将是效率问题。

文件系统观察程序MSDN HERE 会为您提供创建文件的事件,但随后您将不得不处理所有潜在场景,例如有人将另一种类型的文件放入目录,一次多个文件等。

如果我要设计这样的东西,我会考虑多线程应用程序和一些排队。

第 2 部分...

它不会修改整数,它会在创建/删除文件时通知您等。记录这些事件将使您能够跟踪文件本身。保持设置需要运行应用程序之外的一些东西,例如注册表项或磁盘文件。通过对来自文件系统观察程序的事件进行排队,您可以以一种有条理的方式控制对该持久文件的访问,确保它始终与手头的操作相对应,而不仅仅是文件创建或删除事件。

基本上每次应用加载时都会从文件中获取最后一个值,因为操作过程会增加/减少内存中的值并将其写回该文件。 该值将是内存中的整数,并且只需使用 ++ 或 - 递增或递减 - 详细说明 here

【讨论】:

  • 似乎有点急于建议 OP 应该 consider a multithreaded app and some queueing 而不提供他们想要完成的更多细节。
  • 我已经编辑了原始问题以更好地反映应用程序的目的。
  • 当您考虑可能发生的事情时,这似乎是完全合理的。通过使用多线程队列,程序可以做一些事情,例如考虑批量添加的文件,在其他文件仍在处理时删除,在操作正在进行时提供用户反馈(待处理操作与当前操作),一个操作对锁定的文件具有写访问权限当另一个尝试更新它时,列表继续。问题归结为您想要解决方案还是修复。编写一个从一开始就涵盖基础的应用程序可以节省时间和编码成本。
  • 虽然人们不需要担心放置不同类型的文件,因为 xml 文件将由购物车应用程序生成并通过 ftp 导入,但同时存在多个文件的可能性肯定是一种情况我需要交代。但是,不明白文件系统观察程序将如何修改我需要在我创建的文件中递增的整数。你能澄清一下吗?
  • 评论太大,见第二个答案
猜你喜欢
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多