0

我试图在 global.asax 中使用 DateTime 为文件命名,但它给出了错误。你能帮忙吗?

我用于日期时间的代码;

public void callFileCreate()
{
    string path = ConfigurationManager.AppSettings["LogFileFolder"].ToString();


    string filename = HttpContext.Current.Server.MapPath(path + "\\Log_" + DateTime.Now.ToShortDateString().Replace("/", ".") + "_" + (DateTime.Now.ToLongTimeString()).Replace(":", "_") + ".txt");
    TraceFilePath = HttpContext.Current.Server.MapPath(path + "\\Scheduler" + DateTime.Now.ToShortDateString().Replace("/", ".") + "_" + (DateTime.Now.ToLongTimeString()).Replace(":", "_") + ".txt");
    FileStream fs = null, fs1 = null;
    fs = File.Create(filename);
    fs1 = File.Create(TraceFilePath);
    ErrorFilePath = filename;
}
4

2 回答 2

1

Path如果您使用路径,则应该使用该类:

string path = ConfigurationManager.AppSettings["LogFileFolder"].ToString();
string fileName = string.Format("{0}_{1}_{2}.txt"
    , "Log"
    , DateTime.Today.ToString("dd.MM.yyyy")  // change according to your actual culture
    , DateTime.Now.ToString("HH_mm_ss"));
string fullPath = Path.Combine(path, fileName);

不确定这是否能解决您的问题,但它增加了可读性并避免了粗心的错误。

于 2013-08-07T10:57:55.037 回答
0

你不写你得到什么错误。但这里有一些关于如何简化代码的提示:

var dir = HttpContext.Current.Server.MapPath(
              ConfigurationManager.AppSettings["LogFileFolder"].ToString());
var dt = DateTime.Now.ToString("yyyy.MM.dd_HH.mm.ss");

var logFilePath = Path.Combine(dir, string.Format("Log_{0}.txt", dt));
var traceFilePath = Path.Combine(dir, string.Format("Scheduler_{0}.txt", dt));

var fs = File.Create(logFilePath);
var fs1 = File.Create(traceFilePath);

笔记:

  • 如果应用程序设置条目LogFileFolder已经包含(绝对)文件系统路径,例如c:\temp,那么您不应该调用Server.MapPath().
  • fs.Close()一旦不再需要流(或将其放入using块中) ,您应该调用。否则,再次尝试创建(相同)文件将导致异常。
于 2013-08-07T10:59:44.077 回答