我有一个具有以下格式的文件名:
时间戳的用户名 - 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(); }
编辑:我在FlowArgs类中添加了"version"属性(int).但是我的新问题是如何在文件名的末尾附加它
我认为你应该将计数器存储在一个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++); }