我有一个嵌套的if-else
语句,它正在检查我拥有的包含其他txt
文件的文件夹的内容。如果文件夹中已存在此文件,则此方法会创建新的txt
文件或拒绝访问。
我遇到的麻烦是检查文件夹中是否存在文件。目前无论我做什么,命令总是返回"文件名已存在"即使它不存在。
如果文件不存在,则程序应该转到else
语句,然后创建新文件
protected void create(string command, string param1)
{
// creates an empty file w/ default permissions
// if file already exists then error message displayed in console
//checks name of the file, checks if its exists, and if clear, creates the file
if (param1 == "accounts.txt" || param1 == "audit.txt" || param1 == "groups.txt" || param1 == "files.txt")
{
Console.WriteLine("Cannot use this filename");
Console.Read();
return;
}
else if (File.Exists(@"C:\Files\"))
{
Console.WriteLine("Filename already exists");
Console.Read();
return;
}
else
{
string path = Path.Combine(@"C:\Files\", param1);
using (StreamWriter sw = File.AppendText(path))
{
Console.Write("create " + param1 + "");
string path2 = "C:\\Files\\audit.txt";
using (StreamWriter sw2 = File.AppendText(path2))
{
sw2.WriteLine("File " + param1 + " with owner and default permissions created"); //append name of current login from memory
}
Console.ReadLine();
}
}
}
答案 0 :(得分:2)
此块说明文件是否存在,然后写入控制台'文件已存在'
else if (!File.Exists(@"C:\Files\"))
{
Console.WriteLine("File already exists");
Console.Read();
return;
}
另请注意,您在目录上使用File.Exists,而不是实际查看特定文件。
另请参见Directory.Exists
答案 1 :(得分:1)
您没有在代码中提供文件名。字符串@"C:\Files\")
不是文件名,而是目录。
您可以使用类似的内容。
internal static bool FileOrDirectoryExists(string name)
{
return (Directory.Exists(name) || File.Exists(name));
}
要调用该方法,您必须传递有效的文件名。
var name = Path.Combine( @"C:\Test","MyFile.txt");
var ifFileExist = FileOrDirectoryExists(name);