0

我刚刚遇到同事从列表中创建目录的情况。碰巧列表中的一项为空,但异常不为空。

为了满足我的好奇心,我编写了一个测试程序来模仿他在做什么。此测试程序尝试在 c:\Temp 中创建一个空目录,该目录已存在。我原以为会抛出空异常,但没有抛出异常。

这是我的测试程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace CreateNullDirectory
{
  class Program
  {
    static void Main(string[] args)
    {
        String DirectoryName = null;

        String FullDirectoryName = string.Format("c:\\Temp\\{0}",DirectoryName);

        Console.WriteLine(string.Format("Creating Directory {0}", FullDirectoryName));

        try
        {
            Directory.CreateDirectory(FullDirectoryName);
            Console.WriteLine(string.Format("Successfully created directory {0}", FullDirectoryName));
        }
        catch (Exception ex)
        {
            Console.WriteLine(string.Format("Error creating {0} - {1}", FullDirectoryName, ex.Message));
        }

        Console.ReadLine();

    }
  }
}

这是输出:

在此处输入图像描述

CreateDirectory 是否忽略了终止的 null 而我只是试图创建已经存在的 C:\Temp ?

4

1 回答 1

2

您所做的只是调用Directory.CreateDirectory("C:\Temp"),因为在格式字符串中传递空值会返回string.Empty.

CreateDirectory如果目录不存在则创建目录,如果目录已存在则不执行任何操作。

于 2013-01-29T19:34:38.440 回答