У меня есть вложенный оператор if-else
, который проверяет содержимое папки, которая содержит другие файлы txt
. Этот метод либо создает новые файлы txt
, либо запрещает доступ, если они уже существуют в папке.Файл существует, если инструкция проверяет, не вернет правильный вывод, если файл не существует, C#
У меня возникла проблема с проверкой наличия файла в папке. В настоящее время независимо от того, что я делаю, команда всегда возвращает «Имя файла уже существует», даже если оно не существует.
Если файл не существует, то программа должна идти вниз к 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();
}
}
}
К сожалению, что должно быть «(File.Exists (@» C: \ Files \ ")).. Это проверка каталога, если текстовый файл, существует Если имя файла уже принято, он бросает Я обновил вопрос –
@ l.redir Ближе, но ваш код по-прежнему выполняет File.Exists в каталоге. В противном случае вы делаете Path.Combine для создания полного пути. Вам нужно использовать полный путь к файл в вызове File.Exists(), чтобы проверить, было ли это имя файла уже использовано. –