在C#中改变文件路径

时间:2013-12-19 21:49:36

标签: c# date formatting filepath

我正在创建C#Windows窗体,它从共享驱动器中检索文件作为电子邮件附件。我试图自动化文件检索过程,但我可用的文件路径根据日期而有所不同。例如:

  • V:\....\Dec-03\filename12-3-2013.xml

  • J:\.....\December\filename12-4-2013

我将文件路径存储为文本框中的字符串,但由于路径日常变化,我一直在试图弄清楚这个过程的自动化程度。在过去,我已经使用了VBA代码,我已将方法调用连接到字符串中,如此

"..." & Day(Date) & "..."

(我用C#的加号替换了&符号)

但是这只会让我在路径Argument异常中找到非法字符。

我正在使用对提交的检查并通过文本框获取特定的文件路径。我想要在每月文件夹中更新特定文件,文件名包含日期。我想抓住今天的日期或昨天的日期,但有些文件或目录中根本没有日期。由于没有很多一致性,我很乐意输入代码 “+ DateTime.Now.ToString()+”  在每个文件路径的文本框中,因为我通过表单加载它们并让程序执行就像我已经完成了一些VBA代码,但是我在文件路径中间得到了带双引号的非法字符。是否有一些解决方法或者我是否需要为每个特定模式创建修复程序?

3 个答案:

答案 0 :(得分:2)

使用System.IO.Path.Combine(...)一起处理链接目录(它会为你处理额外的斜杠)。在合并中,使用String.Format(SomeFormatString, token1value, toke2value, etc.)为您提供您想要的名称。

C#使用+在较旧的VB中追加字符串而不是&

"My Date: " + DateTime.Now.ToString("MM/dd/yyyy")

上面显示的String.Format的一个例子是

string.Format("My Date: {0}", DateTime.Now.ToString("MM/dd/yyyy"))

答案 1 :(得分:0)

DateTime结构的ToString overload将允许您将日期格式化为月份名称等。

var x = DateTime.Today.ToString("MMMM"); // December

您也可以在格式字符串中包含其他字符,例如,可以使用Dec-19

var x = DateTime.Today.ToString("MMM-dd"); // Dec-19

TyCobb's answer涵盖了使用Path.Combine(我通常建议)将格式化日期合并到路径中。

您还可以使用String.Formatformatted value插入字符串中,这通常更容易阅读并减少错误。例如,要生成第一个示例,可以使用以下命令:

var path =
    String.Format("V:....\{0:MMM-dd}\filename{0:M-d-yyyy}.xml", DateTime.Today);

答案 2 :(得分:0)

如果我关注你所说的日期(日期),你可以在C#中尝试这样的事情:

MyObject.SomeMethod("some string " + dateValue.ToString("ddd") + " more string data");

其中dateValue是DateTime对象,“ddd”参数告诉ToString方法返回星期几的三个字符缩写(例如'Wed')。

有关使用ToString和DateTime对象提取日期的各个部分的详细信息,请参阅 http://msdn.microsoft.com/en-us/library/bb762911(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2