J'ai une collection d'images dans mon dossier de projet. Comment détecter si une image existe dans mon dossier de projet?Comment détecter si un fichier existe dans un dossier de projet?
J'utilise C#. Merci.
J'ai une collection d'images dans mon dossier de projet. Comment détecter si une image existe dans mon dossier de projet?Comment détecter si un fichier existe dans un dossier de projet?
J'utilise C#. Merci.
if (System.IO.File.Exists("pathtofile"))
//it exist
else
//it does not exist
ÉDITÉE MA RÉPONSE APRÈS LE COMMENTAIRE DE LA QUESTION:
J'ai copié le code et changé la fonction des sorties, cela devrait fonctionner
string type = Path.GetExtension(filepath);
string path = @"image/" + type + ".png";
//if(System.IO.File.Exists(path)) I forgot to use the full path
if (System.IO.File.Exists(Path.Combine(Directory.GetCurrentDirectory(), path)))
{ return path; }
else
{ return @"image/other.png"; }
Cela fait fonctionner lorsque votre application est déployée
Une alternative consiste à utiliser 'FileInfo', si vous devez également obtenir des horodatages et d'autres informations de base. –
@Steven: c'est correct si vous voulez l'info du fichier mais File.Exists a une meilleure performance si vous avez seulement besoin de savoir si l'existe –
Oui, c'est pourquoi je l'ai suggéré comme une alternative si vous allez aussi besoin d'informations supplémentaires, pas comme un remplacement général. –
vous pouvez utiliser
string[] filenames = Directory.GetFiles(path);
pour obtenir une liste des fichiers dans le dossier, puis itérer à travers eux jusqu'à ce que vous trouverez ce que vous cherchez (ou non)
ou vous pouvez essayer d'ouvrir le fichier dans un bloc catch essayer et si vous obtenez une exception signifie que le fichier n'existe pas.
Ce ne sont pas de bonnes idées –
Pas aussi efficace que les méthodes 'File.Exists' ou' FileInfo.Exists ' – tdammers
Est-ce vraiment moins efficace? ? Vous l'utiliseriez dans un style d'évaluation paresseux ou obtenir les fichiers au démarrage et conserver la liste. –
Utilisez File.Exists(Path Here)
si vous utilisez un chemin temporaire utilisation Path.GetTempPath()
EDIT: Désolé, même réponse que ci-dessus!
La question est un peu floue mais j'ai l'impression que vous êtes après le chemin où l'exe a été installé?
class Program
{
static Dictionary<string, string> typeImages = null;
static string GetImagePath(string type)
{
if (typeImages == null)
{
typeImages = new Dictionary<string, string>();
string appPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = Path.Combine(appPath, @"image/");
foreach (string file in Directory.GetFiles(path))
{
typeImages.Add(Path.GetFileNameWithoutExtension(file).ToUpper(), Path.GetFullPath(file));
}
}
if (typeImages.ContainsKey(type))
return typeImages[type];
else
return typeImages["OTHER"];
}
static void Main(string[] args)
{
Console.WriteLine("File for XLS="+GetImagePath("XLS"));
Console.WriteLine("File for ZZZ=" + GetImagePath("ZZZ"));
Console.ReadKey();
}
}
Cela vous donnera un dossier d'image qui sera là où l'exe est installé. Dans l'environnement de développement, vous devrez créer un répertoire images sous déboguer et relâcher dans le chemin de l'application car c'est là que VS place les exe.
Pourriez-vous spécifier exactement quand vous devez les détecter? Parlons-nous avant la compilation, ou lorsque le programme compilé est en cours d'exécution? –
J'ai une liste des éléments, des données de liaison à une liste de fichiers sur mon dossier local Z qui se composent de divers fichiers comme .doc, .xls, etc Dans mes fichiers de projet (solution), j'ai un dossier avec un Ce que je veux faire maintenant est de boucler les fichiers dans le dossier Z, détecter le type de fichier, et essayer de retourner comme: type de chaîne = chemin d'accès. GetExtension (chemin de fichier); chemin de chaîne = @ "image /" + type + ".png"; si (Existe (chemin)) { chemin de retour; } sinon { return @ "image/other.png"; } parce que les fichiers situés dans mon dossier de solution, donc je ne sais pas si cela fonctionnera après le déploiement. – VHanded