如何检查当前文件夹中是否存在文件

时间:2017-07-13 21:57:32

标签: c#

美好的一天,我只是想问一下如何检查项目文件夹中是否存在文件夹。我已经有一个名为Temp_File的文件夹。

这是我尝试但没有用的。

        if(File.Exists("Temp_Folder"))
        {
          Messagebox.Show("Folder exist");
        }

我把这段代码放在我的Form1_load中。谢谢〜

3 个答案:

答案 0 :(得分:0)

File.Exists正在检查文件,而不是文件夹,还需要为@“C:\ mydata \ TempFile.txt”这样的文件提供完整的物理路径才能工作。 如果你想检查文件或文件夹,我完全糊涂了。 如果您正在测试folder =>使用Directory.GetDirectories它将返回所有子目录的数组。 如果您正在测试file =>相对文件将保存在[Solution_Path] [Project_Name] [filename.extention]中我建议您使用以下代码来验证您是否正在寻找正确的路径或使用绝对路径。

var test_file=File.Create("test.txt");
Console.WriteLine(test_file.Name);

答案 1 :(得分:0)

如果您要查找的文件与可执行文件位于同一位置,请执行以下操作:

namespace name
{
    class TestClass
    {
        public const string ConstBackSlash = "\\"; // The constant back slash
        public string GetApplicationExecutableDirectoryName()
        {
            return Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
        }

        public void Test()
        {
            if (File.Exists(GetApplicationExecutableDirectoryName() + ConstBackSlash + "Temp_File"))
            {
                MessageBox.Show("File exists");
            }
        }
    }
}

否则,使用公共文件对话框获取目录路径。

答案 2 :(得分:0)

我想这取决于你的意思"当前文件夹"。大概是指您的应用程序安装在其中的文件夹。如果是这种情况,那么您可以使用此获取应用程序所在的目录(请注意,您需要引用System.Reflection才能使用Assembly类):

var thisExeDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

然后,当您拥有该目录时,可以使用Directory.EnumerateDirectories搜索其下的文件夹,将我们的exe路径作为要搜索的目录传递,directoryToFind作为SearchPatternSearchOption.AllDirectories如果你想搜索子文件夹:

var directoryToFind = "Temp_Folder";

var result = Directory
    .EnumerateDirectories(thisExeDirectory, directoryToFind, SearchOption.AllDirectories)
    .FirstOrDefault();

if (result != null)
{
    Console.WriteLine($"Found directory here:\n\"{result}\"");
}

// Wait for input before closing
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();

<强>输出

enter image description here

如果您实际上在寻找File而不是Directory,则代码大致相同,只是您使用Directory.EnumerateFiles代替:

var fileToFind = "TextFile1.txt";

var result = Directory
    .EnumerateFiles(thisExeDirectory, fileToFind, SearchOption.AllDirectories)
    .FirstOrDefault();