2

The given path's format is not supported.在此行收到此错误

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
            }
        }

得到这个值visit_Path

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

5 回答 5

7

您不能:在目录名称中包含,我建议您使用此字符串来获取目录名称中的日期:

DateTime.Now.ToString("yyyy-MM-dd hh_mm_ss");

它将创建时间戳,如:

2013-10-17 05_41_05

附加说明:

用于Path.Combine制作完整路径,例如:

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

最后

string suffix = "visit_"+visitNo+"_" + visitdate;
var visit_Path = Path.Combine(path, suffix);
于 2013-10-17T10:41:23.040 回答
6

通常总是用于Path.Combine创建路径:

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 "."
}
于 2013-10-17T10:46:25.833 回答
4

:文件路径中不能有冒号

于 2013-10-17T10:38:11.990 回答
3

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

于 2013-10-17T10:38:11.423 回答
0

只是想加我的两分钱。我将文本框的路径分配给字符串并添加了其他字符串,但我忘记将 .Text 添加到文本框变量。

所以而不是

strFinalPath = TextBox1.Text + strIntermediatePath + strFilename

我写

strFinalPath = TextBox1 + strIntermediatePath + strFilename

因此路径变得无效,因为它包含无效字符。我很惊讶 c# 没有因为类型不匹配而拒绝分配,而是为最终字符串分配了无效值。因此,请仔细查看路径分配字符串。

于 2016-11-16T21:15:05.157 回答