在此行获取此错误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\
答案 0 :(得分: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);
答案 1 :(得分: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 "."
}
答案 2 :(得分:4)
您无法在文件路径中使用冒号:
答案 3 :(得分:3)
您不能在路径中使用冒号(:
)。例如,Replace()
可以点(.
)。
答案 4 :(得分:0)
只想加我的两分钱。 我将路径从文本框分配给字符串并添加其他字符串,但我忘了将.Text添加到文本框变量中。
所以而不是
strFinalPath = TextBox1.Text + strIntermediatePath + strFilename
我写了
strFinalPath = TextBox1 + strIntermediatePath + strFilename
因此路径无效,因为它包含无效字符。 我很惊讶c#而不是因为类型不匹配而拒绝赋值,为最终字符串分配了无效值。 所以仔细看一下路径分配字符串。