增量计数器
Increment Counter
在我的应用程序中,有一个选项可供用户创建包含一些数据的简单 txt 文件。我想按顺序命名文件,如 ST1、ST2...。此顺序对所有用户都保持不变。如果 user1 创建文件系统应将文件命名为 ST100,然后如果 user2 创建文件则系统应将文件命名为 ST101。
我不能使用应用程序范围,因为它只是就绪,不能在 运行 时更改,因为用户范围只会影响单个用户,不会影响整个应用程序。
我想知道除了使用数据库 table 和跟踪顺序之外,是否还有其他解决方案可以实现此目的。
谢谢
您可以使用循环和 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);
如果您的应用程序始终处于打开状态,您可以使用下一个条目的数值为整个系统使用全局变量。
如果没有,您可以使用文本文件作为数据库,其中包含文件的当前编号;这个解决方案的问题是同步,如果两个用户同时做同样的操作会给你带来麻烦,所以最好使用数据库。
希望对你有帮助
在我的应用程序中,有一个选项可供用户创建包含一些数据的简单 txt 文件。我想按顺序命名文件,如 ST1、ST2...。此顺序对所有用户都保持不变。如果 user1 创建文件系统应将文件命名为 ST100,然后如果 user2 创建文件则系统应将文件命名为 ST101。
我不能使用应用程序范围,因为它只是就绪,不能在 运行 时更改,因为用户范围只会影响单个用户,不会影响整个应用程序。
我想知道除了使用数据库 table 和跟踪顺序之外,是否还有其他解决方案可以实现此目的。
谢谢
您可以使用循环和 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);
如果您的应用程序始终处于打开状态,您可以使用下一个条目的数值为整个系统使用全局变量。 如果没有,您可以使用文本文件作为数据库,其中包含文件的当前编号;这个解决方案的问题是同步,如果两个用户同时做同样的操作会给你带来麻烦,所以最好使用数据库。
希望对你有帮助