检查文件是否存在不起作用

时间:2018-10-04 21:06:29

标签: c#

我试图检查文件是否存在,如果它没有使文本框为空!它不起作用

string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");

if (!File.Exists(filePaths.ToString()))
{
    TboxLeftTable.Text = "";
}
else
{
    TboxLeftTable.Text = System.IO.Path.GetFileName(filePaths[0]);
}

3 个答案:

答案 0 :(得分:1)

好吧,您遇到的一个问题是,您只是想在数组上使用ToString()。由于Directory.GetFiles()返回一个文件名数组,因此您需要遍历这些文件并一次检查一个。像这样:

string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");

foreach (string curFilePath in filePaths)
{
    if (!File.Exists(curFilePath))
    {
        TboxLeftTable.Text = "";
    }
    else
    {
        TboxLeftTable.Text = System.IO.Path.GetFileName(curFilePath);
    }
}

答案 1 :(得分:0)

这是工作代码。感谢您的帮助!

string[] filePaths = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*");

if (filePaths.Length > 0)
    TboxLeftTable.Text = System.IO.Path.GetFileName(filePaths[0]);

答案 2 :(得分:0)

一旦代码被修复,您仍然会有奇怪的逻辑。如果我们采用您的逻辑并用一句话将其拼写出来,则其内容如下:

  

从文件夹中获取文件列表,然后立即检查该文件夹中的文件是否存在

我想您要做的是:

  

从文件夹中获取文件列表,如果存在,则在文本框中显示第一个名字,如果不存在,则不显示任何内容

如果我是对的,那么您的代码将如下所示:

// Gets all string file paths in a folder
// then grabs the first one, or null if there are none
string filePath = Directory.GetFiles(@"C:\TwinTable\LeftTableO0201", "*.*").FirstOrDefault();

// if the path is not null, empty or whitespace    
if(!string.IsNullOrWhiteSpace(filePath)
{
    // then get the filename and put it in the textbox
    TboxLeftTable.Text = Path.GetFileName(filePath);
}
else
{
    // There were no files in the folder so make the textbox empty
    TboxLeftTable.Text = string.Empty;
}