文件存在,如果语句检查,如果文件不存在则不会返回正确的输出,C#

时间:2015-12-01 20:40:46

标签: c# file error-handling file-exists

我有一个嵌套的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();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

此块说明文件是否存在,然后写入控制台'文件已存在'

else if (!File.Exists(@"C:\Files\"))
            {
                Console.WriteLine("File already exists");
                Console.Read();
                return;
            }

另请注意,您在目录上使用File.Exists,而不是实际查看特定文件。

另请参见Directory.Exists

MSDN - Directory Exists method

答案 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);