Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 写入文件名中包含特定日期和时间的文本文件_C#_Filestream - Fatal编程技术网

C# 写入文件名中包含特定日期和时间的文本文件

C# 写入文件名中包含特定日期和时间的文本文件,c#,filestream,C#,Filestream,我试图将所有数据写入一个文本文件,除非我在文件名中输入DateTime,否则该文件将正常工作 当前代码如下所示: string time = DateTime.Now.ToString("d"); string name = "MyName"; File.WriteAllText(time+name+"test.txt","HelloWorld"); 我得到一个例外: mscorlib.dll中发生类型为“System.IO.DirectoryNotFoundException”的未处理异常

我试图将所有数据写入一个文本文件,除非我在文件名中输入
DateTime
,否则该文件将正常工作
当前代码如下所示:

string time = DateTime.Now.ToString("d");
string name = "MyName";
File.WriteAllText(time+name+"test.txt","HelloWorld");
我得到一个例外:

mscorlib.dll中发生类型为“System.IO.DirectoryNotFoundException”的未处理异常

但据我所知,
File.writealText()
方法应该创建一个新文件或覆盖已经存在的文件。

有什么建议吗?

替换

string time = DateTime.Now.ToString("d");
File.WriteAllText(time+name+"test.txt","HelloWorld");

您必须根据a
日期时间指定整个路径,而不仅仅是文件名。现在。ToString(“d”)
看起来是这样的:
6/15/2008
(编辑:根据您的本地文化,它可能会生成有效的文件名)


斜杠在文件名中无效。

这是因为您的名称将解析为“7/29/2015MyNametest.txt”或其他包含无效字符的内容,具体取决于您计算机的区域性。我给出的示例显然不是有效的文件路径。我们必须删除斜线(/)。在Windows上,文件名中不允许使用它们


请将问题作为Windows和Linux上的综合文件命名指南。

您可能希望确保路径有效,并且日期时间字符串不包含无效字符:

string time = DateTime.Now.ToString("yyyy-MM-dd"); 

  // specify your path here or leave this blank if you just use 'bin' folder
string path = String.Format(@"C:\{0}\YourFolderName\", time);

string filename = "test.txt"; 

// This checks that path is valid, directory exists and if not - creates one:
if(!string.IsNullOrWhiteSpace(path) && !Directory.Exist(path)) 
{
   Directory.Create(path);
}
最后将数据写入文件:

File.WriteAllText(path + filename,"HelloWorld");

您的第一个参数不是有效的
路径
。查看它的文档。虽然不使用完整路径并不“好”,但仅使用文件名仍然可以在“某处”创建该文件。(通常在应用程序所在的目录中)@Mystia fubo最近编辑了他的答案,并在文件路径前添加了一个“@”。要么将其添加到代码中,要么添加第二个反斜杠,因为您必须在astring中转义反斜杠。虽然这是正确的(在反文化中,它应产生有效的格式->15.06.2008),但我猜测并说Mystia使用的文化使用的是文件名中不允许使用的分隔符。请参阅my或Maynak的答案。在创建文件名时,不应使用依赖于区域性的“快捷方式”。仍然不存在。无需进行目录检查。如果文件名有效,文件将在调试模式下写入bin目录,或在发布模式下写入程序文件夹。我们只需要确保文件名是有效的。@Mayank为什么您如此确定作者只想使用“bin”目录?如果他用不存在的目录指定完整路径(他可能会这样做),他将得到一个异常,因为这并不能回答OP的问题。OP询问在指定正确的(根据他的)文件名时为什么会出现异常。他在问题中没有提到任何目录。因此,我们可以安全地假设,如果没有指定目录,他知道在哪里找到文件。为什么把他和目录检查混为一谈?
File.WriteAllText(path + filename,"HelloWorld");