Wie erstelle ich einen zufälligen Bildnamen in C #?

8

Wenn ich ein Bild hinzufüge, möchte ich, dass es einen neuen zufälligen Dateinamen erzeugt, denn wenn Sie ein Bild mit demselben Namen hinzufügen, wird es einfach überschrieben.

    
saadan 12.05.2010, 08:18
quelle

8 Antworten

4

Sie könnten eine GUID generieren und diese für Ihren Dateinamen verwenden. Obwohl dies bedeuten würde, dass die Dateien nicht lesbar sind und keine Informationen darüber haben, was der Inhalt ist.

    
Matt 12.05.2010, 08:28
quelle
7

Dies ist eine integrierte Methode Path.GetRandomFileName . Es gibt einen zufälligen Ordnernamen oder Dateinamen zurück.

  

Die GetRandomFileName-Methode gibt a zurück   kryptographisch stark, zufällig   Zeichenfolge, die entweder als a verwendet werden kann   Ordnername oder ein Dateiname. nicht wie   GetTempFileName, GetRandomFileName   erstellt keine Datei. Wenn das   Sicherheit Ihres Dateisystems ist   Oberst sollte diese Methode verwendet werden   anstelle von GetTempFileName.

Wenn Sie Ihre Erweiterung verwenden möchten (z. B. .jpg anstelle von generated), können Sie eine andere Hilfsmethode verwenden Path.ChangeExtension :

%Vor%

System.IO.Path.GetRandomFileName erhält einen Dateinamen, der garantiert eindeutig ist.

    
Alex 12.05.2010 08:55
quelle
5

Um Bilder zu speichern, können Sie einfach eine GUID als Dateinamen verwenden:

%Vor%

Ich mache es immer so, wenn ich eine andere Dateierweiterung als .tmp brauche (welche Dateien bekommen, wenn Sie sie über GetTempFileName erstellen).
Natürlich könnten Sie die Dateien über GetTempFileName erstellen und sie dann umbenennen, aber dann müssen Sie erneut überprüfen, ob eine Datei mit dem neuen Namen existiert ...

    
Christian Specht 12.05.2010 08:32
quelle
3

Benennen Sie Ihr Bild mit einer GUID

Für C # können Sie verwenden: System.Guid.NewGuid().ToString()

    
hakan 12.05.2010 08:29
quelle
3

Sie könnten es mit der aktuellen Zeit erstellen.

%Vor%

Im obigen Beispiel wird die aktuelle Uhrzeit mit Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Sekundenbruchteilen formatiert. (Der Bruchteil einer Sekunde kann mit weniger f s angegeben werden, wenn Sie es auf eins reduzieren möchten.).

Vorteile:

  • Es wird automatisch nach der erstellten Zeit in einer alphabetisch sortierten Liste sortiert. (Wie Standardsortierung im Windows Explorer.)
  • Es ist lesbar und bietet nützliche Informationen über die Zeit, zu der es erstellt wurde.

Nachteile:

  • Wenn es sich um eine Webanwendung (oder eine andere Art von Multi-Thread-Prozess) handelt, besteht eine (geringe) Chance, dass zwei Dateien denselben Namen erhalten, wenn sie gleichzeitig generiert werden. Dies ist kein Problem, wenn es sich um eine Single-Thread-EXE handelt.
awe 12.05.2010 08:28
quelle
1

Vielleicht suchen Sie nach GetTempFileName .

    
Oded 12.05.2010 08:26
quelle
0

Ich würde auch mit der GUID-Lösung gehen.

Hier ein Code, den ich regelmäßig verwenden würde:

%Vor%

Bietet Ihnen eine gute, wiederverwendbare Lösung. Setzen Sie dies in Ihre "Sammlung meiner größten Momente" - classlibrary und Sie sind gut zu gehen.

    
stormianrootsolver 12.05.2010 08:36
quelle
0

Ich würde mit Ehrfurcht gehen . Verwenden Sie den ursprünglichen Dateinamen + DateTime.Now.ToString("yyyyMMddHHmmssffff"); .

    
swirm 12.05.2010 08:31
quelle

Tags und Links