2016-05-22 21 views
0

Ich erstelle eine Software und ich brauche Ihre Hilfe. Ich muss einen Ordner finden, in dem der Name zufällig generiert wird. Es erstellt in C: \ MyFolder \ 123456789Finden Sie zufällige Ordnername, die nur die Nummer

Ich möchte den Ordnernamen in einer Zeichenfolge speichern. Manchmal könnte ein weiterer Ordner erstellt werden, aber ich will es nicht speichern

C: \ MyFolder \ 123456789

C: \ MyFolder \ MySecondFolder

Ich möchte nur

C speichern, : \ MyFolder \ 123456789 in einer Zeichenfolge.

Ich habe versucht:

string MyFolder = Path.GetFileName(C:\MyFolder); MessageBox.Show(MyFolder);

Aber nichts. Vielen Dank im Voraus für die Hilfe!

+0

Nur um es zu verdeutlichen, möchten Sie einen zufälligen Pfad generieren? – greenberet

+0

Nein, es tut mir leid für mein Englisch. Ich möchte den Ordnernamen erhalten – Holory

+0

Sie möchten einen Ordner finden oder einen Ordner erstellen? Ich bin mir nicht sicher, wie du einen Ordner finden würdest, wenn du nicht wüsstest, wonach du gesucht hast. –

Antwort

1

Wie wäre:

DirectoryInfo dirInfo = new DirectoryInfo(@"C:\MyFolder"); 
string direcotryName = dirInfo.Name; 

EDIT: Ich glaube, ich Ihre Frage verstanden

Sie das Verzeichnis finden, die Zahlen enthält - nicht wahr?

DirectoryInfo dirInfo = new DirectoryInfo(@"C:\MyFolder"); 

int parsedInt; 

DirectoryInfo foundDirectory = dirInfo.GetDirectories() 
    .FirstOrDefault(di => int.TryParse(di.Name, out parsedInt)); 
if (foundDirectory != null) 
{ 
    MessageBox.Show(foundDirectory.Name) 
} 

EDIT2: Unterstützung mehr Ordner:

DirectoryInfo dirInfo = new DirectoryInfo(@"C:\MyFolder"); 

DirectoryInfo foundDirectory = dirInfo.GetDirectories() 
    .FirstOrDefault(di => di.Name.All(char.IsNumber)); 
+0

Es zeigt mir: "MyFolder", wenn ich versuche, MessageBox.Show (direcotryName); – Holory

+0

Ich habe meine Antwort bearbeitet, ich denke, ich habe bekommen, was Sie suchen – greenberet

+0

Letzte Frage, wie zu tun, wenn der Ordnername mehr als 11 Zeichen ist? – Holory

0

Versuchen Sie dieses:

var nameLength = 10; 
var rnd = new Random(); 
var randomName = string.Join("", Enumerable.Range(1, nameLength).Select(a => rnd.Next(0, 9).ToString())); 
var path = Path.Combine(@"C:\MyFolder", randomName); 
+0

Gute Idee, ich denke, weil die Ordner mit der gleichen Anzahl von Zeichen erstellt werden. – Holory

+0

Oh, es tut mir leid, dass du meine Frage nicht verstanden hast – Holory

0

Sie Directory.EnumerateDirectories verwenden sollten, und den Verzeichnisnamen testen mit long.TryParse

var folder = new DirectoryInfo(@"C:\MyFolder"); 
long findFile; 
var results = folder.EnumerateDirectories().Where(dir => long.TryParse(dir.Name, out findFile)); 
0
try 
    { 
     // this will get all the files in directory C:\MyFolder\ 

     string[] files = Directory.GetFiles(@"C:\MyFolder\", "*"); 
     // Iterate over all file names to check if it consists only numbers 
     foreach (string file in files) 
     { 
      bool isFileNameNumericOnly = true; 
      // check if file name contains only numbers 
      // if yes then store the name of the file. 

      foreach (char c in file) 
       { 
       // This condition checks if a char is a digit or not 
       if (c < '0' || c > '9') 
        { 
        isFileNameNumericOnly = false; 
        break; 
        } 
       } 
       if(isFileNameNumericOnly == true) 
       { 
       //here you can save the name of file 
       } 
     } 

    } 
    catch (Exception e) 
    { 
     Console.WriteLine("The process failed: {0}", e.ToString()); 
    }