Changement de nom de fichier s'il existe dans un dossier dans C#
Dans mon application, j'ai besoin d'enregistrer un fichier(image,pdf,txt) dans un dossier.
J'ai besoin d'ajouter autant d'images ou de fichiers de mon dossier.
Supposons que j'ai une image avec le nom "image1", si cela existe déjà
dans le dossier et si un autre utilisateur essaie d'ajouter une autre image avec le nom de
"image1" alors ma demande est automatiquement doit changer nomimage "image2".
Afin que l'application doit vérifier si le fichier existe, si oui économiser de l'
nouvelle image avec un nom différent.
Toute aide sera appréciée.
Quelle est votre question? Qu'avez-vous essayé? Ce n' " j'ai besoin d'ajouter autant d'images ou de fichiers de mon dossier."?
Si le nom de fichier est "image", je suppose que vous voulez le deuxième à être nommé "image"?
Si un nom de fichier "image1" existe dans le dossier, et qu'un autre utilisateur veut ajouter une autre image avec le nom"image1", il doit enregistrer la nouvelle image "image2".
Si le nom de fichier est "image", je suppose que vous voulez le deuxième à être nommé "image"?
Si un nom de fichier "image1" existe dans le dossier, et qu'un autre utilisateur veut ajouter une autre image avec le nom"image1", il doit enregistrer la nouvelle image "image2".
OriginalL'auteur Henry | 2011-08-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire comme...
Toutefois, il serait mieux si vous enregistrez le fichier avec l'ajout de Courant DataTime avec le nom de fichier. par exemple,
OriginalL'auteur Muhammad Akhtar
Utiliser le
Fichier.Existe
méthode pour déterminer la présence d'un fichier.Cependant, il faut noter que des conflits pourraient survenir. Par exemple, il y a une race condition que le fichier pourrait être sauvé par quelqu'un d'autre après l'appel à déterminer l'existence, encore avant votre appel pour créer le fichier, de sorte que vous aurez toujours besoin de compte pour l'erreur.
Ce que vous pourriez envisager est de donner à chaque enregistré (téléchargé?) fichier un nom unique, et le référencement dans une base de données, vous pouvez utiliser
Guid.NewGuid
de façon assez fiable dans ce cas.Que pour réellement sauver le fichier, vous avez plusieurs options: vous pouvez utiliser une
FileStream
, statiques les méthodes exposées par leFile
classe, ou la méthode de laFileUpload
de contrôle si vous l'utilisez. Veuillez préciser votre situation.Enfin, en fonction de taille, et si une base de données est utilisé de toute façon, vous pourriez envisager de les stocker en tant que données binaires là, alors les conflits de nom peut être hors de propos.
OriginalL'auteur Grant Thomas
Bien sûr, vous pouvez vérifier si le fichier existe avec
System.IO.File.Exists(...)
, mais je pense que vos exigences sont peut être un peu trop optimiste... il y a plusieurs cas dont vous devez tenir compte. Supposons que vous avez:Les noms ci-dessus suggèrent que vous devriez avoir une convention de nommage, mais cette convention n'est pas universelle (sauf si vous voulez avoir un tas de conventions de nommage pour couvrir tous les cas). Si l'utilisateur souhaite enregistrer un fichier nommé "télécharger" et votre convention de nommage des états que le nom de fichier devrait être incrémenté avec un chiffre avec aucun grand nombre, alors on peut essayer "upload1" et si ce n'est pas disponible, puis "upload2" jusqu'à ce que vous trouviez celui qui est disponible.
Prenons le cas simple avec la convention de l'ajout d'un chiffre sans les zéros à gauche:
Ce serait ajouter un entier à la fin du nom de fichier jusqu'à ce que vous trouver un nom de fichier qui n'est pas dupliqué.
OriginalL'auteur Kiril
Vous devriez être en mesure de vérifier si le nom de fichier existe déjà à l'aide de
System.IO.File.Exists
...Bien vous avez besoin de perfectionner cet exemple afin d'être plus flexible pour vos besoins spécifiques.
OriginalL'auteur Quintin Robinson
Vous pouvez vérifier l'existence d'un fichier avec la
System.IO.File.Exists
[MSDN] méthode. Il prend un chemin de chaîne en argument.Pour la manipulation de la chaîne de chemin si un fichier existe, jetez un oeil à
System.IO.Path
[MSDN]. Il est d'une grande utilité pour faire tout ce dont vous avez besoin.OriginalL'auteur FishBasketGordo
J'ai réussi à résoudre ce problème en utilisant les fichiers téléchargés être nommé par le GUID de la représentation sous forme de chaîne.
Si nécessaire, vous pouvez maintenir la correspondance entre le GUID du fichier généré nom et le nom de fichier d'origine dans la base de données.
Ou tout simplement utiliser ce:
Source: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.saveas.aspx
OriginalL'auteur Leon