我的意思是我第一次将40个文件下载到硬盘上。 我第一次想为每个文件名添加一个数字:000000.png 例如:First ___ 000000.png 然后:两个____ 000000.png 然后三____ 000000.png
现在所有文件都将下载到每个拥有diffrenet名称但编号相同的目录。例如,First ___ 000000.png将在目录First中。目录二中有两个___ 000000.png,依此类推。这部分工作正常我的问题是,15分钟后我再次下载文件这次我想把数字增加1.所以现在它应该是:首___ 000001.png和两___ 000001.png和三___ 000001.png并且它将被保存/下载到目录First和Two and Three,每个目录将有两个文件:First ___ 000000.png和First ___ 000001.png等等。
public FileStream LocalDirectorySettings(FileInfo file)
{
try
{
string path = Path.Combine(LocalDirectory, file.Name);
string fileName = Path.Combine(path, file.Name + "---" + countFilesNames++.ToString("D6") + ".png");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
return new FileStream(fileName, System.IO.FileMode.Create);
}
catch (Exception err)
{
throw;
}
}
现在的问题是我将在目录Ten中有一个文件名:Ten ___ 000010.png而不是Ten ___ 000000.png
我可以设置countFilesNames在每次下载后将其重置为0,但是当我再次下载文件时,我将如何将其更改为1 countFilesNames = 1?
答案 0 :(得分:0)
我明白你想要什么,但此时你的代码不容错。考虑如果您的客户端在中途崩溃并且只从40中下载20个文件会发生什么。您的计数器queue_without_element/3
现在已经消失,之前下载的所有文件将重新写入一些新副本,但文件未到达然而第二轮将保留在他们的文件夹中。这里来了一团糟。
如果不扫描文件夹中已下载的文件,就没有其他方法可以做到这一点,例如countFilesNames
,First
,...,Two
等。
只有在扫描目录结构后,您才能识别已存在的文件并将计数器恢复为正确的值。
我希望你知道如何编写所有相关代码。
答案 1 :(得分:0)
对于一次性操作,ne只能使用常量后缀:
string fileName = Path.Combine(path, file.Name + "---000000.png");
由于每个文件夹都可以进行多次下载,请检查文件夹中的文件计数,并将其用作新文件名称的一部分:
var fileCount = Directory.GetFiles(path).Length;
string fileName = Path.Combine(path, file.Name + "---" + fileCount.ToString("D6") + ".png");