C# 错误:给定路径';不支持s格式

C# 错误:给定路径';不支持s格式,c#,C#,获取此错误不支持给定路径的格式。在此行 System.IO.Directory.CreateDirectory(visit_Path); 我在下面的代码中犯了错误 void Create_VisitDateFolder() { this.pid = Convert.ToInt32(db.GetPatientID(cmbPatientName.SelectedItem.ToString())); String strpath = S

获取此错误
不支持给定路径的格式。
在此行

System.IO.Directory.CreateDirectory(visit_Path);
我在下面的代码中犯了错误

void Create_VisitDateFolder()
        {
            this.pid = Convert.ToInt32(db.GetPatientID(cmbPatientName.SelectedItem.ToString()));
            String strpath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            String path = strpath + "\\Patients\\Patient_" + pid + "\\";
            string visitdate = db.GetPatient_visitDate(pid);
            this.visitNo = db.GetPatientID_visitNo(pid);
            string visit_Path = path +"visit_" + visitNo + "_" + visitdate+"\\";
            bool IsVisitExist = System.IO.Directory.Exists(path);
            bool IsVisitPath=System.IO.Directory.Exists(visit_Path);
            if (!IsVisitExist)
            {
                System.IO.Directory.CreateDirectory(path);
            }
            if (!IsVisitPath)
            {
                System.IO.Directory.CreateDirectory(visit_Path);\\error here
            }
        }
访问路径获取此值

C:\Users\Monika\Documents\Visual Studio 2010\Projects\SonoRepo\SonoRepo\bin\Debug\Patients\Patient_16\visit_4_16-10-2013 00:00:00\

不能在路径中使用冒号(
)。例如,您可以用点(
)替换()

文件路径中不能有冒号

目录名中不能有
,我建议您使用此字符串获取目录名中的日期:

DateTime.Now.ToString("yyyy-MM-dd hh_mm_ss");
它将创建时间戳,如:

2013年10月17日

补充说明:

用于生成完整路径,如:

var path = Path.Combine(strpath , "Patients", "Patient_" + pid);
最后

string suffix = "visit_"+visitNo+"_" + visitdate;
var visit_Path = Path.Combine(path, suffix);
通常,始终使用创建路径:

String strPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
String path = Path.Combine(strPath,"Patients","Patient_" + pid);
string visitdate = db.GetPatient_visitDate(pid);
this.visitNo = db.GetPatientID_visitNo(pid);
string fileName = string.Format("visit_{0}_{1}", visitNo, visitdate);
string visit_Path = Path.Combine(path, fileName);
bool IsVisitExist = System.IO.Directory.Exists(path);
bool IsVisitPath=System.IO.Directory.Exists(visit_Path);
要替换文件名中的无效字符,可以使用以下循环:

string invalidChars = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
foreach (char c in invalidChars)
{
    visit_Path = visit_Path.Replace(c.ToString(), ""); // or with "."
}

只是想加上我的两分钱。 我将一个文本框的路径指定给了string,还添加了其他字符串,但是我忘记了将.text添加到文本框变量中

所以不是

strFinalPath = TextBox1.Text + strIntermediatePath + strFilename
我写

strFinalPath = TextBox1 + strIntermediatePath + strFilename
因此路径无效,因为它包含无效字符。 我感到惊讶的是,c#没有因为类型不匹配而拒绝赋值,而是将无效值赋给了最后一个字符串。
因此,请仔细查看路径分配字符串

在目录名中?通常,使用
路径。组合
来构造路径,而不是
strpath+“\\Patients\\Patient\\\\++pid+“\\\\”+“visit\\++visitNo+“\\”+visitdate+”
@TimSchmelter你能告诉我这行代码是怎么写的吗