gpt4 book ai didi

c# - Directory.CreateDirectory 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:37 24 4
gpt4 key购买 nike

我正在使用 C# 2010 创建一个应用程序,其目的是复制具有指定扩展名的文件。它使用 .NET Framework 3.5。

我有以下代码:

    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)); 不工作?

编辑:我用 Path.GetDirectoryName(filePath) 替换了 FileTrim 函数。

最佳答案

让“调试”代码

private void GetFiles()
{
//1. Lets say SourcePath = "C:\some\kind\of\directory\"
foreach (string filePath in Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories))
{
//2. Lets say we have file filePath = "C:\some\kind\of\directory\file.txt"

//.. all validation

//3. At this point Path.GetDirectoryName("C:\some\kind\of\directory\file.txt")
// returns "C:\some\kind\of\directory\"
//4. Lets create that directory...but wait its already exist and contains some files!
// Why create what already exists?
Directory.CreateDirectory(Path.GetDirectoryName(filePath));
to_copy.Add(filePath);
}
}

所以事实是您的 CreateDirectory 调用是无用的,因为您已经循环遍历了目录中的现有文件。除非您想在所有目录中创建新的子目录“Temp”,否则您需要这样做:

Directory.CreateDirectory(Path.Combine(Path.GetDirectoryName(filePath), "Temp"));

之后,您将创建 C:\some\kind\of\directory\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 之前不存在,那么将创建该目录,并将同名文件复制到该目录。

关于c# - Directory.CreateDirectory 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com