J'ai rencontré plusieurs fois ce problème dans lequel je voudrais avoir plusieurs versions du même fichier dans le même répertoire. La façon dont je l'ai fait en utilisant C # est d'ajouter un horodatage au nom du fichier avec quelque chose comme ça DateTime.Now.ToString().Replace('/', '-').Replace(':', '.'). Y a-t-il une meilleure manière de faire cela?
Il existe des spécificateurs de format personnalisés suivants: y (année), M (mois), d (jour), h (heure 12), H (heure 24), m (minute), s (seconde), f (seconde fraction), F (deuxième fraction, les zéros de fin sont coupés), t (PM ou AM) et z (fuseau horaire).
Avec la méthode d'extension
Usage:
string result ="myfile.txt".AppendTimeStamp();//myfile20130604234625642.txt
J'ai ajouté Path.GetDirectoryName(fileName)pour obtenir le chemin complet du fichier. Puis remplacé string.Concat()par Path.Combine()le get le nom de fichier complet.
gilu
17
Je préfère utiliser:
string result ="myFile_"+DateTime.Now.ToFileTime()+".txt";
Que fait ToFileTime ()?
Convertit la valeur de l'objet DateTime actuel en une heure de fichier Windows.
public long ToFileTime()
Une heure de fichier Windows est une valeur de 64 bits qui représente le nombre d'intervalles de 100 nanosecondes qui se sont écoulés depuis le 1er janvier 1601 AD (CE) Coordinated Universal Time (UTC) à minuit à minuit. Windows utilise une heure de fichier pour enregistrer lorsqu'une application crée, accède ou écrit dans un fichier.
Peut-être que l'ajout à la DateTime.Now.Ticksplace est un peu plus rapide car vous ne créerez pas 3 chaînes et la valeur des graduations sera toujours unique également.
cette réponse la façon dont vous obtenez l'horodatage !. ajoutez-le à un fichier à l'aide de la classe Path et la manipulation de la chaîne n'est pas du tout un problème. ceci seulement une alternative à DateTime.ToString Method (String) ou string.Format ("{0: yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now);
Pour Date et heure actuelles comme nom d'un fichier sur le système de fichiers. Appelez maintenant la méthode string.Format et combinez-la avec DateTime.Now, pour une méthode qui génère la chaîne correcte en fonction de la date et de l'heure.
using System;
using System.IO;classProgram{staticvoidMain(){//// Write file containing the date with BIN extension//string n =string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}.bin",DateTime.Now);File.WriteAllText(n,"abc");}}
Path.GetDirectoryName(fileName)
pour obtenir le chemin complet du fichier. Puis remplacéstring.Concat()
parPath.Combine()
le get le nom de fichier complet.Je préfère utiliser:
Que fait ToFileTime ()?
Source: documentation MSDN - Méthode DateTime.ToFileTime
la source
Peut-être que l'ajout à la
DateTime.Now.Ticks
place est un peu plus rapide car vous ne créerez pas 3 chaînes et la valeur des graduations sera toujours unique également.la source
vous pouvez utiliser:
la source
Vous pouvez utiliser ci-dessous à la place:
la source
Pour Date et heure actuelles comme nom d'un fichier sur le système de fichiers. Appelez maintenant la méthode string.Format et combinez-la avec DateTime.Now, pour une méthode qui génère la chaîne correcte en fonction de la date et de l'heure.
Production :
la source