将包含名称的文件从源复制到目标 c#
Copy files containing a name from source to destination c#
我有一个包含一系列名称的字符串列表,我想在源目录中找到这些名称并将它们复制到目标。
这就是我正在尝试的,但是我将所有源目录复制到目标目录中:
List<string> ncs = new List<string>();
ncs = getNames();
foreach (var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
foreach (var directory in Directory.GetDirectories(sourceDir))
CopyNCfromTo(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
我也在尝试这个方法:
List<string> ncs = new List<string>();
ncs = getNames();
for (int i = 0; i < ncs.Count; i++)
{
FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles(ncs[i].ToString());
}
我想循环列表并查找源文件夹中的每个文件,我该怎么做?
我假设 ncs 列表只包含名称而不是文件路径或带扩展名的文件名。
foreach (var file in Directory.GetFiles(sourceDir))
if (ncs.Contains(Path.GetFileName(file).Split('.').First()))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
发生这种情况是因为 foreach 正在浏览文件夹中包含的文件而不是名称列表,这样一来,所有文件都会复制到目标文件夹。
foreach(string fileName in ncs){
string path = sourceDir + fileName;
bool result = System.IO.File.Exists(path);
if(result == true){
string destinationPath = targetDir + fileName;
System.IO.File.Copy(path,destinationPath);
}
}
通过名称列表检查文件是否存在,如果存在,将文件复制到目标文件夹
您可以遍历 ncs
,构建源路径和目标路径,如果文件存在则进行复制。
警告:File.Exists()
会引入竞争条件。如果您不确定该文件夹中没有其他进程在工作,那么您应该处理 IO 异常。
string sourceDir = "C:\....";
string targetDir = "C:\....";
foreach (string filename in ncs)
{
string srcFile = Path.Combine(sourceDir, filename);
string destFile = Path.Combine(targetDir, filename);
if (File.Exists(srcFile))
{
File.Copy(srcFile, destFile);
}
}
我有一个包含一系列名称的字符串列表,我想在源目录中找到这些名称并将它们复制到目标。
这就是我正在尝试的,但是我将所有源目录复制到目标目录中:
List<string> ncs = new List<string>();
ncs = getNames();
foreach (var file in Directory.GetFiles(sourceDir))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
foreach (var directory in Directory.GetDirectories(sourceDir))
CopyNCfromTo(directory, Path.Combine(targetDir, Path.GetFileName(directory)));
我也在尝试这个方法:
List<string> ncs = new List<string>();
ncs = getNames();
for (int i = 0; i < ncs.Count; i++)
{
FileInfo[] filesInDir = hdDirectoryInWhichToSearch.GetFiles(ncs[i].ToString());
}
我想循环列表并查找源文件夹中的每个文件,我该怎么做?
我假设 ncs 列表只包含名称而不是文件路径或带扩展名的文件名。
foreach (var file in Directory.GetFiles(sourceDir))
if (ncs.Contains(Path.GetFileName(file).Split('.').First()))
File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
发生这种情况是因为 foreach 正在浏览文件夹中包含的文件而不是名称列表,这样一来,所有文件都会复制到目标文件夹。
foreach(string fileName in ncs){
string path = sourceDir + fileName;
bool result = System.IO.File.Exists(path);
if(result == true){
string destinationPath = targetDir + fileName;
System.IO.File.Copy(path,destinationPath);
}
}
通过名称列表检查文件是否存在,如果存在,将文件复制到目标文件夹
您可以遍历 ncs
,构建源路径和目标路径,如果文件存在则进行复制。
警告:File.Exists()
会引入竞争条件。如果您不确定该文件夹中没有其他进程在工作,那么您应该处理 IO 异常。
string sourceDir = "C:\....";
string targetDir = "C:\....";
foreach (string filename in ncs)
{
string srcFile = Path.Combine(sourceDir, filename);
string destFile = Path.Combine(targetDir, filename);
if (File.Exists(srcFile))
{
File.Copy(srcFile, destFile);
}
}