好的,让我们稍微处理一下这段代码。首先让我们简化构建路径。我们有一个网络路径和一个本地路径。根据您当前的代码,网络路径是用几个变量comboBox1
、comboBox2
和构建的Environment.UserName
,所以让我们做一些不同的事情:
var networkPath = Path.Combine(@"\\network",
comboBox1.SelectedItem as string,
comboBox2.SelectedItem as string,
Environment.UserName);
这将正确地放置\
在每个字符串之间(即,如果已经有一个反斜杠,它就不会添加一个,但如果有必要的话会添加)。
现在让我们对本地路径做同样的事情:
var localPath = Path.Combine(@"C:\Users",
Environment.UserName,
"test",
label5.Text);
好的,我们快到了,但我们还有一个替代网络路径:
var alternativeNetworkPath = Path.Combine(@"\\atlanta2-0\it-documents\filestroage",
comboBox1.SelectedItem as string,
comboBox2.SelectedItem as string,
Environment.UserName,
label5.Text);
现在,我已经怀疑这条路径的一件事是\filestroage
,这实际上拼写错误。现在,如果文件夹的拼写很好,但我想知道它是否拼写错误。所以看看吧。好吧,让我们继续,现在我们已经构建了所有三个路径,它更容易阅读,我们可以轻松输出这些字符串以确保它们是正确的。我们来看看逻辑。它说的是,如果networkPath
存在则将其保存在那里,但是,如果它不存在则创建它并将其保存到alternativeNetworkPath
. 所以让我们这样做:
if (Directory.Exists(networkPath))
{
File.Copy(localPath, networkPath);
}
else
{
Directory.CreateDirectory(networkPath);
File.Copy(localPath, alternativeNetworkPath);
}
好吧,够简单了吧?但是您说 theDirectory.Exists
正在返回 true even if it exists
。这几乎是预期的不是吗?如果目录存在,那么这个方法肯定会返回true
,如果不存在,它就会返回false
。然后你说Directory.CreateDirectory
-The line above says the network name cannot be found
这只能意味着路径构建错误。
所以在分解它之后,底线是这样的,正在建造的路径必须是一帆风顺的。但是,使用这种新模型,您应该能够更轻松地拉出这些路径。所以在我看来,整个方法看起来像这样:
var networkPath = Path.Combine(@"\\network",
comboBox1.SelectedItem as string,
comboBox2.SelectedItem as string,
Environment.UserName);
var localPath = Path.Combine(@"C:\Users",
Environment.UserName,
"test",
label5.Text);
var alternativeNetworkPath = Path.Combine(@"\\atlanta2-0\it-documents\filestroage",
comboBox1.SelectedItem as string,
comboBox2.SelectedItem as string,
Environment.UserName,
label5.Text);
if (Directory.Exists(networkPath))
{
File.Copy(localPath, networkPath);
}
else
{
Directory.CreateDirectory(networkPath);
File.Copy(localPath, alternativeNetworkPath);
}
所以现在让我们看看这些变量中的那些路径,你的问题应该会出现。