我这里有这个代码,它接受64字符串并创建字节,然后我为这些字节创建一个文件名。
byte[] bytes = System.Convert.FromBase64String(landingCells.imageBytes);
var filePath = landingCells.jobNo + DateTime.Now.ToString("yyyyMMddHHmmssffffff");
接下来我保存了这些字节:
System.IO.File.WriteAllBytes("C:/app/Images/" + filePath + ".jpg", bytes);
我遇到的问题是我通过iOS应用程序在循环中调用这些代码行,有时yyyyMMddHHmmssffffff与循环中的上一项相同。我的问题是,如何使文件名更加独特,以免发生这种情况。
答案 0 :(得分:4)
使用Guid.NewGuid()尝试此操作:
var uniquecode=Guid.NewGuid();
var filePath = landingCells.jobNo + DateTime.Now.ToString("yyyyMMddHHmmssffffff")+uniquecode;
答案 1 :(得分:2)
使用基于日期的名称会将文件创建速率限制为系统时钟的频率(并且也不是线程安全),这就是当您完成循环迭代过快时看到重复文件名的原因。您有多种选择可以根据您的要求使其更加独特:
我不确定你正在构建什么样的应用程序,但值得重新评估你是否真的需要每秒将那么多图像写入磁盘,如果你做的话,视频是否是更好。限制写入可能不是一个坏主意,它也可以解决命名问题。