自动递增文件名

mas*_*nix 0 c# string

我有一个具有以下格式的文件名:

时间戳的用户名 - 1

这个文件经常写入,但在它变得太大之前我想创建一个新文件.

时间戳的用户名-2-

如何使用最少的内存(即没有或很少的变量)来实现这一点

这是我的版本:

        private void Split() {
            char[] strArr = FlowArgs.Filename.ToCharArray();
            int num;
            //get the last number
            if(Int32.TryParse(strArr[strArr.Length - 1].ToString(), out num)) {
                num += 1;
            }
            //replace the old number with the new number
            char.TryParse(num.ToString(), out strArr[strArr.Length - 1]);
            FlowArgs.Filename = strArr.ToString();

        }
Run Code Online (Sandbox Code Playgroud)

编辑:我在FlowArgs类中添加了"version"属性(int).但是我的新问题是如何在文件名的末尾附加它

Tam*_*ege 5

我认为你应该将计数器存储在一个int中.我知道你想节省内存空间,但说实话,额外的int实际上是在"可接受的"类别中.我的意思是,Int32解析器可能浪费了更多的内存.不要忘记在x86上,内存空间被分配到4096字节页面,因此浪费的内存比这4字节多得多.

编辑:您可能希望在您的类中有一个类似GetNextFileName()的方法,为您生成下一个文件名(能够将代码重构为小位非常重要,比保存内存空间重要得多):

private int nextFileNumber = 0;

private string GetNextFileName(string userName)
{
    return String.Format("{0}-{1}-{2}", DateTime.Now, userName,
       nextFileNumber++);
}
Run Code Online (Sandbox Code Playgroud)