无法使用Filestream构造函数(C#)创建具有变量名称的文件

时间:2010-12-06 02:06:08

标签: c# filestream

我正在尝试使用以下语法创建一个名称为“今天”日期作为名称一部分的文件:

private static FileStream fs = new FileStream(@"C:\Test\log" + DateTime.Now.ToShortDateString() + ".txt", FileMode.OpenOrCreate, FileAccess.Write);

似乎Filestream不会采用可变路径......对此更好的方法是什么?

THX!

2 个答案:

答案 0 :(得分:5)

问题是您生成了带有嵌入式斜杠的路径,ToShortDateString()返回en-US文化。在您的示例中,它正在尝试打开文件C:\Test\log12/6/2010.txt,我认为文件夹C:\Test\log12\6不存在。

尝试使用DateTime.Now.ToString("yyyyMMdd")之类的内容来代替您的文件。

答案 1 :(得分:1)

HI Aidenn,

问题不是文件流。这是您创建文件名的方式。如果将文件名放在变量中,则可以看到它。这是它的样子:

“C:\测试\ log12 / 5 / 2010.txt”

看看ToShortDateString()方法如何包含'/'字符?这些是有效的目录分隔符。因此,由于无法找到目标“log12”和“5”,因此对CreateFile()的较低级别Win32调用失败。

您需要创建一个不包含任何无效文件名字符的文件名。

在MSDN上查看此文章Naming Files, Paths, and Namespaces

-foredecker