2016-05-10 25 views
-2

Ich arbeite gerade an einem Projekt, das ein Postfach nach Anhängen durchsucht, und wenn eines gefunden wird, wird es in das Verzeichnis des Benutzers gestellt. Mein Problem ist, dass wenn ich überprüfe, ob die Datei im Pfad existiert, ändere ich den Namen des Anhangs und füge einen Zähler und einen Zeitstempel hinzu, so dass es nicht überschrieben wird. Wenn es jedoch in die Bedingung wechselt und den Dateinamen ändert, wird die Pfadvariable nicht aktualisiert, um den richtigen Wert der Variablennamen zu enthalten.Der Wert einer Variablen wird nicht aktualisiert.

string timeProcessed = DateTime.Now.ToString(); 
byte[] bytefiles = attachment.ContentBytes; 
string cleanName = MakeCleanName(userEmail.Subject, attachment.Name);  
string path = employeeStarPath + "\\" + cleanName; 
// updated this in order to prevent images with the same name from overwritting eachother. 
if (File.Exists(path)) 
{         
    cleanName = Path.GetFileNameWithoutExtension(attachment.Name).ToString()+"(" + counter + ")" + "-(Recieved - " + timeProcessed.Replace(":",".").Replace("/",".") + ")"+ Path.GetExtension(attachment.Name); << this value is not updated in the path variable. 

} 

Jetzt bin mir bewusst, dass ich den Weg var path = employeeStarPath + "\\" + cleanName; wieder durch den Aufruf aktualisieren kann, aber ich fühle, dass dies meinen Code macht ein wenig verwirrend.

+0

Ja, hatte zu gehen weg vom Monitor, ich werde mein Code ein bisschen restrukturieren, nur im Kopf behalten eine andere Person, die nach mir kommen kann – EasyE

+0

Was ist der Unterschied zwischen dem, was in dem Verfahren MakeCleanName geschieht und was tun Sie im 'if (File.Exists (path))' Block? Ich denke, dass du wirklich nur eine dieser Aussagen machen willst, je nachdem, was gerade passiert. – Zack

+0

Ja genau, was ich dachte, ich werde meine Datei in meiner Makeclean-Methode überprüfen, so dass es besser aussieht. – EasyE

Antwort

2

Ich habe Ihre Frage vielleicht nicht verstanden, aber können Sie einfach die Zeile "string path = employeeStarPath +" \ "+ cleanName;" am ende statt vor dem wenn?

string timeProcessed = DateTime.Now.ToString(); 
byte[] bytefiles = attachment.ContentBytes; 
string cleanName = MakeCleanName(userEmail.Subject, attachment.Name);  

// updated this in order to prevent images with the same name from overwritting eachother. 
if (File.Exists(path)) 
{         
    cleanName = Path.GetFileNameWithoutExtension(attachment.Name).ToString()+"(" + counter + ")" + "-(Recieved - " + timeProcessed.Replace(":",".").Replace("/",".") + ")"+ Path.GetExtension(attachment.Name); << this value is not updated in the path variable. 

} 

string path = employeeStarPath + "\\" + cleanName; 
Verwandte Themen