OVH Cloud OVH Cloud

Pb de suppression d'un fichier

6 réponses
Avatar
Ced
Bonour,

En fait j'ai cr=E9e une fonction permettant de supprimer=20
des fichiers.
Je voudrais supprimer des fichiers dont je ne connais que=20
le nom
=3D> donc faire un delete sur un fichier monfichier.*

Dans ma fonction, j'ai mis :=20
if(File.Exists(myFile))
File.Delete(myFile);

Et j'ai essay=E9 de donner =E0 myFile la valeur monfichier.*,=20
mais il g=E9n=E8re une exception, et passe dans le catch car=20
il dit que le fichier monfichier.* n'existe pas.

Est-ce que ce que je veux faire est possible ? Comment=20
lui faire interpr=E9ter correctement le symbole * ?

Merci d'avance.

Ced

6 réponses

Avatar
Pierre Alexis [MVP]
Salut Ced,

Tu as écrit :

En fait j'ai crée une fonction permettant de supprimer
des fichiers.
Je voudrais supprimer des fichiers dont je ne connais que
le nom
=> donc faire un delete sur un fichier monfichier.*

Dans ma fonction, j'ai mis :
if(File.Exists(myFile))
File.Delete(myFile);

Et j'ai essayé de donner à myFile la valeur monfichier.*,
mais il génère une exception, et passe dans le catch car
il dit que le fichier monfichier.* n'existe pas.

Est-ce que ce que je veux faire est possible ? Comment
lui faire interpréter correctement le symbole * ?



Voici en VB ce que cela donnerait :

Dim myDir As New IO.DirectoryInfo("C:Documents and
SettingsPierreMes documents")
Dim curFileInfo As IO.FileInfo

For Each curFileInfo In myDir.GetFiles("test.*")
curFileInfo.Delete()
Next

Je pense pas que cela soit très difficile à convertir en C# ;-).

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Ced
Justement c'est ce que j'ai fait en c#, mais apparemment
il n'interprète pas le caractère *, mais fait comme si le
nom du fichier était monfichier.*
Et c'est là que je ne vois pas pourquoi ça plante en fait.
Parce que quand je fais le (file.delete(myfile))

le myfile a pour valeur : c:mesdocs...monfichier.*

Tu vois ce que je veux dire ?

Merci pour ton aide en tout cas.

Ced

-----Message d'origine-----
Salut Ced,

Tu as écrit :

En fait j'ai crée une fonction permettant de supprimer
des fichiers.
Je voudrais supprimer des fichiers dont je ne connais




que
le nom
=> donc faire un delete sur un fichier monfichier.*

Dans ma fonction, j'ai mis :
if(File.Exists(myFile))
File.Delete(myFile);

Et j'ai essayé de donner à myFile la valeur




monfichier.*,
mais il génère une exception, et passe dans le catch




car
il dit que le fichier monfichier.* n'existe pas.

Est-ce que ce que je veux faire est possible ? Comment
lui faire interpréter correctement le symbole * ?



Voici en VB ce que cela donnerait :

Dim myDir As New IO.DirectoryInfo("C:Documents


and
SettingsPierreMes documents")
Dim curFileInfo As IO.FileInfo

For Each curFileInfo In myDir.GetFiles("test.*")
curFileInfo.Delete()
Next

Je pense pas que cela soit très difficile à convertir en


C# ;-).

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/


.



Avatar
Bismark Prods
Non, non en C# ca fonctionne aussi très bien !

System.IO.DirectoryInfo myDir = new System.IO.DirectoryInfo(@"C:Documents
and SettingsPierreMes documents");
foreach(System.IO.FileInfo file in myDir.GetFiles("14.*"))
{
this.textBox1.Text += file.Name + "n";
}

Ce qui me sort : 14.jpg 14.bmp 14.gif et 14.txt

Donc la fonction fonctionne bien !

Bismark


"Ced" a écrit dans le message de
news:064901c47ad5$2c22aff0$
Justement c'est ce que j'ai fait en c#, mais apparemment
il n'interprète pas le caractère *, mais fait comme si le
nom du fichier était monfichier.*
Et c'est là que je ne vois pas pourquoi ça plante en fait.
Parce que quand je fais le (file.delete(myfile))

le myfile a pour valeur : c:mesdocs...monfichier.*

Tu vois ce que je veux dire ?

Merci pour ton aide en tout cas.

Ced

-----Message d'origine-----
Salut Ced,

Tu as écrit :

En fait j'ai crée une fonction permettant de supprimer
des fichiers.
Je voudrais supprimer des fichiers dont je ne connais




que
le nom
=> donc faire un delete sur un fichier monfichier.*

Dans ma fonction, j'ai mis :
if(File.Exists(myFile))
File.Delete(myFile);

Et j'ai essayé de donner à myFile la valeur




monfichier.*,
mais il génère une exception, et passe dans le catch




car
il dit que le fichier monfichier.* n'existe pas.

Est-ce que ce que je veux faire est possible ? Comment
lui faire interpréter correctement le symbole * ?



Voici en VB ce que cela donnerait :

Dim myDir As New IO.DirectoryInfo("C:Documents


and
SettingsPierreMes documents")
Dim curFileInfo As IO.FileInfo

For Each curFileInfo In myDir.GetFiles("test.*")
curFileInfo.Delete()
Next

Je pense pas que cela soit très difficile à convertir en


C# ;-).

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/


.



Avatar
Pierre Alexis [MVP]
Salut Ced,

Tu as écrit :

Justement c'est ce que j'ai fait en c#, mais apparemment
il n'interprète pas le caractère *, mais fait comme si le
nom du fichier était monfichier.*
Et c'est là que je ne vois pas pourquoi ça plante en fait.
Parce que quand je fais le (file.delete(myfile))



Pour compléter la réponse de Bismark, Delete("test.*") et tout à fait
différent de GetFiles("test.*"). Car GetFiles accepte les masques avec jokers,
tandis que Delete demande un fichier bien précis !

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/
Avatar
Ced
Tu as raison pour le Getfile, j'ai déjà essayé en mettant
un ".*" et ça marche très bien, mais pour le delete, j'ai
pas l'impression que ça fonctionne, à moins qu'il existe
des astuces.

Ced

-----Message d'origine-----
Salut Ced,

Tu as écrit :

Justement c'est ce que j'ai fait en c#, mais




apparemment
il n'interprète pas le caractère *, mais fait comme si




le
nom du fichier était monfichier.*
Et c'est là que je ne vois pas pourquoi ça plante en




fait.
Parce que quand je fais le (file.delete(myfile))



Pour compléter la réponse de Bismark, Delete("test.*")


et tout à fait
différent de GetFiles("test.*"). Car GetFiles accepte


les masques avec jokers,
tandis que Delete demande un fichier bien précis !

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/


.



Avatar
Pierre Alexis [MVP]
Salut Ced,

Tu as écrit :

Tu as raison pour le Getfile, j'ai déjà essayé en mettant
un ".*" et ça marche très bien, mais pour le delete, j'ai
pas l'impression que ça fonctionne, à moins qu'il existe
des astuces.



Relis ce que j'ai écris... "tandis que Delete demande un fichier bien précis
!"

Et c'est clairement indiqué dans la MSDN :

GetFiles :

Retourne la liste des fichiers du répertoire en cours correspondant au
searchPattern spécifié, « *.txt », par exemple.

[C#]
public FileInfo[] GetFiles(
string searchPattern
);

Paramètres
searchPattern
Chaîne recherchée, « *.txt », par exemple.

Delete :

Supprime le fichier spécifié. Une exception n'est pas levée si le fichier
spécifié n'existe pas.

[C#]
public static void Delete(
string path
);

Paramètres
path
Nom du fichier à supprimer.

Dans l'un on a un "searchPattern", dans l'autre un "path"....

--
Pierre ALEXIS - MVP Visual Basic Classique
Courriel & messenger :
FAQ Visual Basic : http://faq.vb.free.fr/