我正在尝试使用File.WriteAllBytes()保存多个图像,即使我尝试使用'Thread.Sleep()'保存它之间也无法正常工作..
我的代码:
byte[] signatureBytes = Convert.FromBase64String(model.Signature);
byte[] idBytes = Convert.FromBase64String(model.IdCapture);
//Saving the images as PNG extension.
FileManager.SaveFile(signatureBytes, dirName, directoryPath, signatureFileName);
FileManager.SaveFile(idBytes, dirName, directoryPath, captureFileName);
SaveFile功能:
public static void SaveFile(byte[] imageBytes, string dirName, string path, string fileName, string fileExt = "jpg")
{
if (!string.IsNullOrEmpty(dirName)
&& !string.IsNullOrEmpty(path)
&& !string.IsNullOrEmpty(fileName)
&& imageBytes.Length > 0)
{
var dirPath = Path.Combine(path, dirName);
var di = new DirectoryInfo(dirPath);
if (!di.Exists)
di.Create();
if (di.Exists)
{
File.WriteAllBytes(dirPath + $@"\{fileName}.{fileExt}", imageBytes);
}
}
else
throw new Exception("File cannot be created, one of the parameters are null or empty.");
}
答案 0 :(得分:2)
File.WriteAllBytes():
"创建一个新文件,将指定的字节数组写入文件,然后关闭该文件。如果目标文件已存在,则会被覆盖"
如前所述: https://msdn.microsoft.com/en-ca/library/system.io.file.writeallbytes(v=vs.110).aspx
因此,如果您只能看到最后一个,那么您将覆盖该文件。
答案 1 :(得分:0)
除了(正如@Daniel所说)你覆盖同一个文件的可能性,我不确定这段代码:
var di = new DirectoryInfo(dirPath);
if (!di.Exists)
di.Create();
if (di.Exists)
{
...
}
如果调用di.Create()
,Exists
属性被更新,我会感到惊讶。事实上,它是不更新 - 我检查了。
因此,如果目录 not 存在,那么即使在创建目录后也不会进入条件部分。这可以解释你的问题吗?