目的:使用C#语言在“C:\Users\Confidence\Testing\”目录下创建新的文件夹以及文本文件(其他类型文件同理)。
环境:Visual Studio 2019,Windows。
代码如下:
/// <summary>
///
/// Create new directory and file if they are not exist
///
/// </summary>
/// <param name="directoryName"></param>
/// <param name="fileName"></param>
#region
public static void CreateDirectoryOrFile(string newDirectoryName, string newFileName)
{
string path = "C:\\Users\\Confidence\\Testing\\";
if (!Directory.Exists(path + newDirectoryName))
{
Directory.CreateDirectory(path + newDirectoryName);
if(!File.Exists(path + newDirectoryName + "\\"))
{
File.Create(path + newDirectoryName + "\\" + newFileName).Close();
}
}
}
#endregion
问题:在判断文件是否存在时如果不指定创建的绝对路径,则系统默认会在创建的该项目的"bin\Debug"目录下创建文件。
除此方法之外,也可以用其他方法获取到新建的文件夹的路径,然后在该文件夹下创建方法,本文暂只提供上述方法,见谅。
直接调用方法即可:
static void Main(string[] args)
{
Console.WriteLine("*************************************************");
string newDirectoryName = Console.ReadLine(); //读入文件夹名称并赋值
Console.WriteLine("-------------------------------------------------");
string newFileName = Console.ReadLine(); //读入文件名称并赋值(包含后缀名)
CreateDirectoryOrFile(newDirectoryName, newFileName);
//Console.Read();
}
==============================================
2020.12.03
更新:用户输入路径:
-------本方法只考虑输入的路径合法的情况,其他情况自行添加------
static void Main(string[] args)
{
Console.WriteLine("Input a directory name:");
string newDirectoryName = Console.ReadLine();
Console.WriteLine("Input a file name with suffix:");
string newFileName = Console.ReadLine();
Console.WriteLine("Input a path end with (\):");
string newPath = Console.ReadLine();
CreateDirectoryOrFile(newDirectoryName, newFileName, newPath);
}
public static void CreateDirectoryOrFile(string newDirectoryName, string newFileName, string newPath)
{
if (!newPath.Contains("\t\t"))
{
newPath = @"C:\Users\Desktop\";
if (!Directory.Exists(newPath + newDirectoryName))
{
Directory.CreateDirectory(newPath + newDirectoryName);
if (!File.Exists(newPath + newDirectoryName + "\\" + newFileName))
{
File.Create(newPath + newDirectoryName + "\\" + newFileName).Close();
}
}
}
}
之所以采用Contains("\t\t")是因为ReadLine本身会返回一个回车键,不输入路径名的话也需要使用回车键。