当我将文件保存到文件系统时,我需要按时间顺序存储它(只有三级深度)。年 - >月 - >日 - >然后存储文件。 (2010年 - > 6月 - > 01-06-2010 - > file1.txt。 如果文件夹已在文件系统中,则不要创建它们只保存文件。
什么是最好的方法?
答案 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);