【问题标题】:Increment Counter增量计数器
【发布时间】:2015-11-04 11:14:07
【问题描述】:

在我的应用程序中,有一个选项可以让用户创建一个包含一些数据的简单 txt 文件。我想按顺序命名文件,如 ST1、ST2.... 对于所有用户,此顺序将保持不变。如果 user1 创建一个文件系统应该命名文件 ST100,然后如果 user2 创建一个文件那么系统应该命名文件 ST101。

我不能使用应用程序范围,因为它只是准备就绪并且不能在运行时更改,因为用户范围只会影响单个用户而不是整个应用程序。

我想知道除了使用数据库表和跟踪序列之外还有其他解决方案吗?

谢谢

【问题讨论】:

  • 最简单的解决方案(可能也是最强大的)是读取现有文件名,然后生成一个不存在的名称。
  • 为什么从 100 开始而不是 001?
  • 可能是创建一些队列?并从一个地方基于该队列创建这些文件。

标签: c# auto-increment


【解决方案1】:

你可以使用循环和File.Exists:

var dir = @"C:\SampleFolder";
int number = 100; // you want to start at 100
string fileName = String.Format("ST{0}.txt", number.ToString("D3"));
while(File.Exists(Path.Combine(dir, fileName)))
    fileName = String.Format("ST{0}.txt", (++number).ToString("D3"));

最后你会得到一个新的文件名并且你会得到正确的路径:

string path = Path.Combine(dir, fileName);

【讨论】:

  • @GiorgiNakeuri:他可以将File.Create 放入try...catch,处理IOException,然后再试一次(直到超过最大尝试计数变量)。
【解决方案2】:

如果您的应用程序始终处于打开状态,您可以为整个系统使用一个全局变量以及下一个条目的数值。 如果没有,您可以使用文本文件作为具有当前文件编号的数据库;这个方案的问题是同步问题,如果两个用户同时做同样的操作会给你带来问题,所以最好使用数据库。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多