C# 在不知道文件名的情况下将文件从一个位置移动到另一个位置
我的一个可执行进程生成两个文件。我想将生成的一个文件移动到共享驱动器。我正在编写一个自动进程,将文件从一个位置移动到共享驱动器。唯一的问题是每次运行可执行文件时文件名都会更改,因此我没有带上确切的文件名。我只有扩展名.xls。我的目录中只有一个.xls文件 我试过这么做C# 在不知道文件名的情况下将文件从一个位置移动到另一个位置,c#,file,C#,File,我的一个可执行进程生成两个文件。我想将生成的一个文件移动到共享驱动器。我正在编写一个自动进程,将文件从一个位置移动到共享驱动器。唯一的问题是每次运行可执行文件时文件名都会更改,因此我没有带上确切的文件名。我只有扩展名.xls。我的目录中只有一个.xls文件 我试过这么做 File.Copy(@"*.xls", @"\\serv44\Application\testing\name\test2\*.xls", true); 它抛出了一个错误,表示名称无效。将文件移动到共享驱动器后。我想删除.xl
File.Copy(@"*.xls", @"\\serv44\Application\testing\name\test2\*.xls", true);
它抛出了一个错误,表示名称无效。将文件移动到共享驱动器后。我想删除.xls文件
File.Delete("*.xls");
任何帮助都将不胜感激您应该获得文件名,然后对该文件执行任何操作。即,如果源目录中只有一个xls文件:
var targetDirectory = @"\\serv44\Application\testing\name\test2\";
var sourceFile = Directory.EnumerateFiles(sourceDirectory, "*.xls").FirstOrDefault();
if (sourceFile != null)
{
var sourceFileName = Path.GetFileName(sourceFile);
var targetFileName = Path.Combine(targetDirectory, sourceFileName);
File.Copy(sourceFileName, targetFileName);
File.Delete(sourceFileName);
}
注意:您可以使用单次移动操作,而不是复制和删除
如果要从源目录中移动多个文件,则不使用第一个进程,而是在循环中移动所有找到的文件:
foreach(var sourceFile in Directory.EnumerateFiles(sourceDirectory, "*.xls"))
{
var sourceFileName = Path.GetFileName(sourceFile);
var targetFileName = Path.Combine(targetDirectory, sourceFileName);
File.Move(sourceFileName, targetFileName);
}
这将为您提供该文件名:
var fileName = Directory.GetFiles(yourDirectory, "*.xls").ToList().FirstOrDefault();
使用Directory.GetFiles查询文件GetFiles方法返回一个数组。然后你把它转换成一个列表-为什么?最后只取第一个值。其他的都扔进垃圾桶。假设这个文件夹包含一百万个文件,正如Anjali所说的,目录中只有一个xls文件,为什么要想象百万个文件呢?我只将一个项数组转换为list,以便能够使用FirstOrDefault方法,我认为这在这里很有用。我可以直接返回零位项,但我想进行空数组检查