2016-12-01 4 views
0

ich den Code getestet haben und das Verzeichnis wird die korrekte Eingabe, aber aus irgendeinem Grund kann es nicht finden. Gibt es etwas, was mir fehlt, warum ich kein Verzeichnis finden kann?das richtige Verzeichnis Lesen

Hier ist mein Code ziemlich simpel wie jetzt von.

public partial class Form1 : Form 
{ 
    string fileName; 
    string dirName;  

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     dirName = textBox1.Text; 
     fileName = textBox2.Text; 

     if (System.IO.Directory.Exists(dirName)) 
     {    
      if (System.IO.File.Exists(fileName)) 
      {      
       System.IO.File.Delete(fileName); 
      } 
      else 
      { 
       MessageBox.Show("Invalid Directory or File Name"); 
      } 
     } 
    } 
+2

Was halten Sie für "die richtige Eingabe"? – itsme86

+0

Sie sind nicht den Verzeichnisnamen und Dateinamen, was sind die Werte? Ich würde etwas wie Path.Combine (dirName, fileName) verwenden –

+0

Was ist der Wert von 'dirName'? Was ist mit 'Dateiname'? –

Antwort

0

Das ist, weil ich Sie vorbei den Verzeichnispfad durch eine Eingabesteuerung auf diese Weise „C:/examplePath /“ erraten und es sollte auf diese Weise „C: \\ examplePath“ erklärt werden, weil die Flucht Zeichen, und wahrscheinlich erhalten Sie einen weiteren Fehler weiter, denn wenn Sie nach der Existenz einer Datei fragen, müssen Sie den Verzeichnispfad plus Dateiname (und seine Erweiterung) verketten.

so sollte die endgültige Zeichenfolge sein wie dieses "c: \\ ExampleDir \\ examplefile.ext"

oder einfach sollten Sie versuchen:

dirName = string.Format("@{0}", textBox1.Text); 
fullPathFile = string.Format("{0}/{1}", dirName, textBox2.Text); 

Und dann verwenden Sie "fullPathFile" statt Variable "Dateiname"

Vergessen Sie nicht, Ihre Anwendung zu debuggen, sicherzustellen, was den String-Wert ist.

+1

hilft dieser wouldnt Für Text, der von der UI eingegeben wird, gilt dies nur für Text, der zur Entwurfszeit codiert wurde. Schrägstriche (/) sind auch in Ordnung und müssen nicht maskiert werden. Manuell kombinieren Sie auch die Pfade, mit dem Pfad statische Helfer vereinfacht Ihren Code kein Ende! :) –

0

Basierend auf Ihren Code, scheint es, Dateinamen und dirName kommen aus zwei verschiedenen Textboxsteuerelemente. Und Sie kombinieren auch nicht den Dateipfad (oder so scheint es). Wenn Sie also Directory.Exists() aufrufen, ist es sinnvoll, dass dies funktioniert, aber die Datei nicht gefunden werden kann. Wenn Sie File.Exists() verwenden, müssen Sie nicht nur den Dateinamen, sondern auch das Verzeichnis übergeben, in dem sich das Verzeichnis befindet. Verwenden Sie dazu die Path.Combine() -Methode.

if (System.IO.Directory.Exists(dirName)) 
{ 
    string filePath = System.IO.Path.Combine(dirName, fileName); 

    if (System.IO.File.Exists(filePath)) 
    { 
     System.IO.File.Delete(filePath); 
    } 

    else 
    { 
     MessageBox.Show("Invalid Directory or File Name"); 
    } 
} 
+0

Ok, das macht mehr Sinn. –

Verwandte Themen