我有一个win服务,将文件“a.txt”写入文件夹“Input”。 从这里开始,另一个第三方服务会在文件“输出”中修改文件后将其放回原处。 使用文件名“a.txt”,我可以识别放置在Input中的文件已被处理并接收到bny Output。
我的问题是,即使我等待处理后的副本返回“输出”,同一文件的更新版本也可能写入“输入”。 所以在这种情况下,当我在“输出”中找到“a.txt”时,如何确定它是哪个版本的原始文件? 我尝试使用FileInfo.CreationTimeUtc属性,但更改为“输出”。 有什么建议吗?
答案 0 :(得分:0)
也许您可以在输出中添加日期和时间到文件名。
正如您所说,您无法更改文件名,第二个选项是在文件中写入日期和时间。
答案 1 :(得分:0)
您是否可以控制将a.txt写入输出的第三方服务?如果是这样,FileInfo.CreationTimeUtc既是读写又是写。将文件放入输出后,可能需要处理文件的创建时间,并在输出文件中设置该文件。
答案 2 :(得分:0)
如果您不控制第三方工具,您需要控制唯一的东西 - 您编写的文件。如果写入“a.txt”而不是写入“a.timestamp.txt”,则可以看到已处理的版本。
答案 3 :(得分:0)
正如您所说,您无法更改文件名称,您有以下选项
或强>
答案 4 :(得分:0)
您可以监视目录并将放在Input中的文件存储在第二个目录中(如果您确实不能使用同一目录),并修改了文件名。
如果您不能在输出目录中使用Timestamp,则必须等到Output中的文件也被处理,因此您不会覆盖它。我在generell中看到的问题是如果文件a.txt上没有锁或类似的东西。 a.txt可以写两次,第一个版本根本不会被处理。就像已经说过更好的是某种非基于文件的队列或输入中更多的唯一名称。即使您没有直接控制第三方服务,这也可能是个大问题......