Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不知道文件名的情况下将文件从一个位置移动到另一个位置_C#_File - Fatal编程技术网

C# 在不知道文件名的情况下将文件从一个位置移动到另一个位置

C# 在不知道文件名的情况下将文件从一个位置移动到另一个位置,c#,file,C#,File,我的一个可执行进程生成两个文件。我想将生成的一个文件移动到共享驱动器。我正在编写一个自动进程,将文件从一个位置移动到共享驱动器。唯一的问题是每次运行可执行文件时文件名都会更改,因此我没有带上确切的文件名。我只有扩展名.xls。我的目录中只有一个.xls文件 我试过这么做 File.Copy(@"*.xls", @"\\serv44\Application\testing\name\test2\*.xls", true); 它抛出了一个错误,表示名称无效。将文件移动到共享驱动器后。我想删除.xl

我的一个可执行进程生成两个文件。我想将生成的一个文件移动到共享驱动器。我正在编写一个自动进程,将文件从一个位置移动到共享驱动器。唯一的问题是每次运行可执行文件时文件名都会更改,因此我没有带上确切的文件名。我只有扩展名.xls。我的目录中只有一个.xls文件

我试过这么做

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方法,我认为这在这里很有用。我可以直接返回零位项,但我想进行空数组检查