每次我单击Windows窗体上的按钮时,我都想创建一个程序,无限地按顺序创建文件。
例如,这里有一个. txt文件。当我用c#的windows格式创建一个新名称的文件时,我想创建一个-2.txt。如果我继续添加更多的文件,我想创建一个-3.txt,一个-4.txt,一个-5.txt......。
例如这里是文件。a-2.txt,a-3.txt,a-4.txt,a-5.txt如果我随机删除a-3.txt,a-4.txt,我想知道如何使a-3.txt,a-4.txt,a-6.txt,a-7.txt...每次我点击Windows窗体上的按钮。原因是a-2.txt,a-5.txt仍然存在。
4条答案
按热度按时间xkftehaa1#
因为你还没有包括任何代码,我将给予你一个没有代码的答案,为你指出正确的方向
创建文件时,需要列出目录中的所有文件,分隔编号,并对它们进行排序,以找到下一个可用的编号,从而知道要创建的文件名。
您可以通过枚举目录中的文件来获取列表来实现此目的
然后,您将面临一些简单的问题:拆开这些文件路径以获得名称,然后拆开名称以创建一个数字列表,然后找到下一个应该创建的数字
要从路径获取文件名,可以使用
Path.GetFileNameWithoutExtension
要从文件名获取编号,可以使用
RegEx
要将列表转换为
int
的列表,可以使用Linq
oknrviil2#
你应该使用这样的东西,但是添加你的本地路径,正如萨鲁曼所说,修剪掉返回的路径。
下面的代码应该检查a.txt文件,如果不存在,就调用另一个函数来创建它。如果a.txt文件存在,它会查找所有具有适当名称的文件,将它们按“-”和.“”拆分,只取出编号,将编号转换成列表并排序。
计数器会寻找列表中的第一个缺口,如果找到,则使用它,否则选择一个适当的高1的数字。这只是草草写出来的,没有经过测试(VS现在不想工作),所以你可能需要调试。
hgc7kmma3#
您可以使用Windows API
GetTempFileName
指定:质量标准:
MSDN网站:
为临时文件创建名称。如果生成唯一的文件名,则创建一个空文件并释放其句柄。否则,仅生成文件名。
具体而言:
uUnique [in]用于创建临时文件名的无符号整数。有关详细信息,请参阅“备注”。
如果uUnique为零,函数将尝试使用当前系统时间生成一个唯一的文件名。如果文件已经存在,则数字加1,并且函数将测试该文件是否已经存在。此操作将一直持续到找到唯一的文件名;该函数创建一个文件名并关闭它。2注意当uUnique不为零时,该函数不试图验证文件名的唯一性。
为什么要使用此功能?
这里的其他答案,虽然很好,涉及到你获得所有预先存在的文件(其中可能有很多),然后计算文件名,然后在创建它之前测试唯一性,到那时,具有相同名称的文件可能会被另一个进程创建。虽然
GetTempFileName
有一个类似唯一性的循环,它只需要你一个单独的调用和一行代码,并且不需要文件名预取。更多
u1ehiz5o4#
下面是一个程序,从文件列表中获取下一个连续的id,然后用这个id写一个新文件: