如何使用c#创建按时间顺序排列的文件夹?

时间:2010-06-08 18:40:43

标签: c# .net

当我将文件保存到文件系统时,我需要按时间顺序存储它(只有三级深度)。年 - >月 - >日 - >然后存储文件。 (2010年 - > 6月 - > 01-06-2010 - > file1.txt。 如果文件夹已在文件系统中,则不要创建它们只保存文件。

什么是最好的方法?

4 个答案:

答案 0 :(得分:6)

可能不是最好的,但速度很快..用c:\ temp运行,得到C:\ temp \ 2010 \ juni \ 08-06-2010。区域设置依赖月份名称btw ..

    public static DirectoryInfo GetCreateMyFolder(string baseFolder)
    {
        var now = DateTime.Now;
        var yearName = now.ToString("yyyy");
        var monthName = now.ToString("MMMM");
        var dayName = now.ToString("dd-MM-yyyy");

        var folder = Path.Combine(baseFolder,
                       Path.Combine(yearName,
                         Path.Combine(monthName,
                           dayName)));

        return Directory.CreateDirectory(folder);
    }

答案 1 :(得分:1)

DateTime d = DateTime.Now;
String s = Path.Combine(d.Year.ToString(), d.ToString("MMMM"), d.ToString("dd-MM-yyyy"), "file1.txt");
if (!Directory.Exists(s)) Directory.CreateDirectory(s);

对于不同的日期格式,这是一个很好的资源:http://blog.stevex.net/string-formatting-in-csharp/

显然,您应该将此路径组合到要保存文件的主路径(例如:String s2 = Path.Combine("C:\\Test", s);)。

答案 2 :(得分:0)

string basePath = @"c:\temp";
var myDate = DateTime.Now;
DirectoryInfo di = Directory.CreateDirectory(Path.Combine(basePath, myDate.Year.ToString()));
di = Directory.CreateDirectory(Path.Combine(di.FullName, myDate.ToString("MMMM")));
di = Directory.CreateDirectory(Path.Combine(di.FullName, myDate.ToString("dd-MM-yyyy")));

您也可以通过以下方式进行CreateDirectory次呼叫:

string basePath = @"c:\temp";
var myDate = DateTime.Now;
Directory.CreateDirectory(Path.Combine(Path.Combine(Path.Combine(basePath, myDate.Year.ToString()), myDate.ToString("MMMM")), myDate.ToString("dd-MM-yyyy")));

答案 3 :(得分:0)

string StartupPath= @"C:\temp\";
string Year = DateTime.Now.Year.ToString(); 
string Month = DateTime.Now.Month.ToString(); 
string Day = DateTime.Now.Day.ToString();
Directory.CreateDirectory(StartupPath + "\\" + Year + "\\" + Month + "\\" + Day);