我想验证文件是否在多台服务器上。服务器上唯一不同的是服务器上的数字,例如。 Server1,Server2,Server3等
我将如何编写一个循环,将每个数字替换为下一个最高的数字,直到服务器10为止?
这是我到目前为止所拥有的:
var fileLocation = @"\\Server1\documents\File.txt";
var newFileInfoTest = fileLocation.Replace("Server1", "Server2");
if (File.Exists(newFileInfoTest))
txtTextBox.Text = "Server1 -- File copy successful.";
else
txtTextBox.Text = "Server1 -- File copy unsuccessful";
答案 0 :(得分:3)
“我将如何编写一个循环,将每个数字替换为下一个最高的数字,直到服务器10为止?”
您可以使用循环迭代器值作为服务器名称的一部分,在循环中设置服务器名称
for(int i = 1; i <= 10; i++)
{
txtTextBox.Text = File.Exists($@"\\Server{i}\documents\File.txt")
? $"Server{i} -- File copy successful."
: $"Server{i} -- File copy unsuccessful";
}
请注意,上面的代码将在每次迭代时覆盖txtTextBox.Text
值。您可能想要捕获循环中的所有状态,然后在最后显示它们:
txtTextBox.Text = string.Join(Environment.NewLine, Enumerable.Range(1, 10)
.Select(i => File.Exists($@"\\Server{i}\documents\File.txt")
? $"Server{i} -- File copy successful."
: $"Server{i} -- File copy unsuccessful."));
在您询问的评论中:
“如果文件位置在变量中,您将如何处理?”
执行此操作的一种方法是使用带数字的占位符({0}
)格式字符串,然后使用string.Format
在循环内填充该占位符。
我们可以使用string.Split
字符上的\
从字符串中提取服务器名称,并获取第一项。
例如:
var serverPath = @"\\Server{0}\documents\File.txt";
txtTextBox.Text = string.Join(Environment.NewLine, Enumerable.Range(1, 10)
.Select(i =>
{
var thisPath = string.Format(serverPath, i);
var serverName = thisPath.Split(new[] { '\\' },
StringSplitOptions.RemoveEmptyEntries).First();
return File.Exists(thisPath)
? $"{serverName} -- File copy successful."
: $"{serverName} -- File copy unsuccessful.";
}));
答案 1 :(得分:1)
您可以执行以下操作,确保您的消息不会被覆盖,可以使用字符串生成器代替串联。希望你能理解
var msg = string.Empty;
for(int i = 1; i < 11; i++) {
var fileLocation = $"\\Server{i}\documents\File.txt";
if (File.Exists(fileLocation))
{
msg += $"Server{i} -- File copy successful.";
}
else
{
msg += $"Server{i} -- File copy unsuccessful.";
}
}
txtTextBox.Text = msg;
答案 2 :(得分:0)
尝试一下:
for (int i = 0; i < 11; i++){
var fileLocation = $@"\\Server{i}\documents\File.txt";
if (File.Exists(fileLocation))
txtTextBox.Text = $"Server{i} -- File copy successful.";
else
txtTextBox.Text = $"Server{i} -- File copy unsuccessful";
}
}
答案 3 :(得分:0)
“我如何编写一个循环,将每个数字替换为下一个最高的数字,直到服务器10为止?”
var numberofServers = 10;
for(int i =0; i <= numberOfServers; i++){
var fileLocation = $"\\Server{i}\\documents\\File.txt";
if(File.Exists(fileLocation)){
//Success
}
else{
//UnSuccessful
}
}