确定path是文件还是目录 - 当文件尚不存在时

时间:2017-09-26 19:09:51

标签: c# .net winforms

我已经查看了与我的情况相关的stackoverflow问题。 他们没有回答基本问题。 我的应用程序允许用户键入完全限定的路径。此路径必须是文件。该文件尚不存在(它们正在保存备份)。如果使用getattributes方法,它将在找不到文件时触发try / catch的catch。 (因为它不应该)。我需要捕获用户是否只是放入目录的路径,如果路径是文件不存在的文件。如果发生任何一种情况,我需要向用户提供定向反馈。我正在使用C#和4.5.2的.NET框架。

感谢您的任何指示。

4 个答案:

答案 0 :(得分:2)

文件不必具有文件扩展名,以使其成为有效文件。因此,您不能依赖具有文件扩展名的路径将其称为文件。

using System;

namespace FileFolder_46434099
{
    class Program
    {
        static void Main(string[] args)
        {
            string incomingpath = @"C:\temp\3075";
            if (System.IO.Directory.Exists(incomingpath))
            {
                Console.WriteLine("path is a directory");
            }
            else if (System.IO.File.Exists(incomingpath))
            {
                Console.WriteLine("path is of a file");
            }
            Console.ReadLine();
        }
    }
}

在这种情况下...... C:\temp\3075实际上是一个文件,程序就这样返回。

答案 1 :(得分:0)

你可以尝试一下,看看这是不是你想要的。我假设用户将输入文件的扩展名,如您所述,用户将输入完全限定的路径。

static void Main(string[] args)
    {
        Console.WriteLine("Enter fully qualified path of the file to be accessed.");
        var eneteredPath = Console.ReadLine();
        var isItFile = Path.HasExtension(eneteredPath);
        if (isItFile)
        {
            Console.WriteLine($"Specified File exists = {File.Exists(eneteredPath)}");
        }
        else if(Directory.Exists(eneteredPath))
        {
            Console.WriteLine($"Specified path is to a directory.");
        }
    }

答案 2 :(得分:0)

所以我有一个带有txtInput的简单表单和一个按钮:

using System.IO;

private void cmdCheck_Click(object sender, EventArgs e)
    {
        if (Directory.Exists(txtInput.Text))
        {
            // This is a directory, not a file.
        }
        else
        {
            try
            {
                if (File.Exists(txtInput.Text))
                {
                    var fileInfo = new FileInfo(txtInput.Text);

                    // File exists and now we have the information.  Alert the user.
                }
                else
                {
                    // File doesn't exist.  Do things.
                }
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message, "ERROR");
            }
        }
    }

这是否符合您的要求?

答案 3 :(得分:0)

这可以帮助您https://www.dotnetperls.com/path

路径。这条路通向某个地方。它介于树木和建筑物之间。云移动。阳光到达地面,我们的方向很明确。 使用Path,.NET Framework中的一个类,我们有内置方法。该类在处理文件路径时有帮助。它是System.IO的一部分。