C# Directory.CreateDirectory不工作
我正在使用C#2010创建一个应用程序,其目的是复制具有指定扩展名的文件。它使用.NETFramework 3.5 我有以下代码:C# Directory.CreateDirectory不工作,c#,directory,.net,C#,Directory,.net,我正在使用C#2010创建一个应用程序,其目的是复制具有指定扩展名的文件。它使用.NETFramework 3.5 我有以下代码: private void GetFiles() { bool validext; foreach (string filePath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories)) { /
private void GetFiles()
{
bool validext;
foreach (string filePath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
{
//Check if the file has a specified extension
validext = false;
foreach (string extension in ext)
if (HasExtension(filePath, extension))
{
validext = true;
break;
}
if ((validext && mode == 1) || (!validext && mode == 2))
{
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
to_copy.Add(filePath);
}
}
totalcount = to_copy.Count;
}
此命令有问题:
Directory.CreateDirectory(TrimFile(filePath));
它不会引发任何异常,它应该创建的目录路径有效,并且应用程序以管理员权限运行。然而,该目录并没有被创建。搜索互联网没有给我任何答案,所以我的问题是:
为什么是Directory.CreateDirectory(TrimFile(filePath))代码>不工作
编辑:我已经用路径替换了FileTrim函数。GetDirectoryName(filePath)
允许“调试”代码
因此,事实是您的CreateDirectory调用是无用的,因为您已经在目录中的现有文件中循环。除非您想在所有目录中创建新的子目录“Temp”,否则您需要执行以下操作:
Directory.CreateDirectory(Path.Combine(Path.GetDirectoryName(filePath), "Temp"));
string directoryToCopyFiles = @"C:\My\directory\of\file\copies";
if(!Directory.Exists(directoryToCopyFiles))
Directory.CreateDirectory(directoryToCopyFiles);
File.Copy(Path.Combine(directoryToCopyFiles, Path.GetFileName(filePath)), filePath);
之后,您将获得C:\some\kind\of\directory\Temp
创建的目录
要将文件复制到其他目录,您需要执行以下操作:
Directory.CreateDirectory(Path.Combine(Path.GetDirectoryName(filePath), "Temp"));
string directoryToCopyFiles = @"C:\My\directory\of\file\copies";
if(!Directory.Exists(directoryToCopyFiles))
Directory.CreateDirectory(directoryToCopyFiles);
File.Copy(Path.Combine(directoryToCopyFiles, Path.GetFileName(filePath)), filePath);
之后,如果以前不存在目录,将创建目录C:\My\directory\of\file\copies
,并将同名文件复制到该目录。允许“调试”代码
因此,事实是您的CreateDirectory调用是无用的,因为您已经在目录中的现有文件中循环。除非您想在所有目录中创建新的子目录“Temp”,否则您需要执行以下操作:
Directory.CreateDirectory(Path.Combine(Path.GetDirectoryName(filePath), "Temp"));
string directoryToCopyFiles = @"C:\My\directory\of\file\copies";
if(!Directory.Exists(directoryToCopyFiles))
Directory.CreateDirectory(directoryToCopyFiles);
File.Copy(Path.Combine(directoryToCopyFiles, Path.GetFileName(filePath)), filePath);
之后,您将获得C:\some\kind\of\directory\Temp
创建的目录
要将文件复制到其他目录,您需要执行以下操作:
Directory.CreateDirectory(Path.Combine(Path.GetDirectoryName(filePath), "Temp"));
string directoryToCopyFiles = @"C:\My\directory\of\file\copies";
if(!Directory.Exists(directoryToCopyFiles))
Directory.CreateDirectory(directoryToCopyFiles);
File.Copy(Path.Combine(directoryToCopyFiles, Path.GetFileName(filePath)), filePath);
之后,如果目录以前不存在,将创建目录
C:\My\directory\of\file\copies
,并在那里复制同名文件。我最近也遇到了这个问题,我很傻,我没有具体化正确的路径,所以它是在创建我具体化的目录在VSProjects/ProjectName/bin/Debug/
:'D
之前:
if (!Directory.Exists(Path.GetDirectoryName(properties.ApiConfigRoute)))
Directory.CreateDirectory("ConfigFolder");
之后:
if (!Directory.Exists(Path.GetDirectoryName(properties.ApiConfigRoute)))
Directory.CreateDirectory(Path.GetDirectoryName(properties.ApiConfigRoute));
啊!希望能有帮助。只要确保你是用绝对路线来创建它我最近也陷入了这一困境,愚蠢的我,我没有具体化正确的路径,所以它是在创建我具体化的目录在
VSProjects/ProjectName/bin/Debug/
:'D
之前:
if (!Directory.Exists(Path.GetDirectoryName(properties.ApiConfigRoute)))
Directory.CreateDirectory("ConfigFolder");
之后:
if (!Directory.Exists(Path.GetDirectoryName(properties.ApiConfigRoute)))
Directory.CreateDirectory(Path.GetDirectoryName(properties.ApiConfigRoute));
啊!希望能有帮助。只需确保您使用绝对路径创建它您可以发布
TrimFile(filePath)
的输出吗?TrimFile的用途是什么?你能告诉我们在使用TrimFile之前和之后路径字符串的内容是什么吗?我猜这就是你的问题所在。见:1。您正在尝试创建已存在的目录。2.您可以使用Path.GetDirectoryName(filePath)
代替TrimFile
。如果(!Directory.Exists(Path.GetDirectoryName(filePath)))在Directory.createdirectoryname()之前添加
请。文件的用途是什么?你能告诉我们在使用TrimFile之前和之后路径字符串的内容是什么吗?我猜这就是你的问题所在。见:1。您正在尝试创建已存在的目录。2.您可以使用Path.GetDirectoryName(filePath)
来代替TrimFile
。如果(!Directory.Exists(Path.GetDirectoryName(filePath)))
在Directory.createdirectoryname()之前添加,您将看到您不会输入if语句。我认为我没有正确详细说明程序的用途。错误是我试图在源文件夹中创建我想要复制的目录,而不是在目标文件夹中,正如您所指出的,这显然是毫无意义的。解决方案是将Directory.CreateDirectory替换为Directory.CreateDirectory(Path.GetDirectoryName(filePath).replace(SourcePath,DestinationPath))代码>。然而,你的评论为我指明了正确的方向,所以这实际上是一个答案。非常感谢你的帮助!我想我没有正确地详细说明这个计划的目的。错误是我试图在源文件夹中创建我想要复制的目录,而不是在目标文件夹中,正如您所指出的,这显然是毫无意义的。解决方案是将Directory.CreateDirectory替换为Directory.CreateDirectory(Path.GetDirectoryName(filePath).replace(SourcePath,DestinationPath))代码>。然而,你的评论为我指明了正确的方向,所以这实际上是一个答案。非常感谢你的帮助!