none
Groupe des fichiers RRS feed

Réponses

  • Sans doute un problème de version. Je suis sur VS2010/.NET 4. Dans ton cas cela serait plutôt VS2008/.NET 2.0 ?

    Dans ce cas on peut aussi faire qq chose comme :

    Array.ForEach(IO.Directory.GetFiles("c:\windows\temp", "*.tst"), AddressOf IO.File.Delete)
    

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse papyx jeudi 24 novembre 2011 12:15
    jeudi 24 novembre 2011 10:58
    Modérateur

Toutes les réponses

  • Bonjour,

    -1-

    La même extension dans quoi ... l'unité, un répertoire, le répertoire courant du programme ?

    -2-

    Sans faire de boucle ... avec une recherche par DIR ou avec une boîte de dialogue ?

    Cordialement.

     

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 23 novembre 2011 08:29
  • c'est l'équivalent de   "*.xyz" de MS-DOS, dans le même répertoire. 
    Alain D
    mercredi 23 novembre 2011 09:20
  • Bonjour Alain,

    Tu écris ...

    Comment coder (sans faire de boucle)

    Ah, pourquoi sans faire de boucle, je ne vois pas... voici le code :

     

     

    Try
     Dim ligne As String = Dir(My.Application.Info.DirectoryPath & "\*.txt")
      ListBox1.Items.Add(ligne)
      Do While ligne <> ""
       My.Application.DoEvents()
       ligne = Dir()
       ListBox1.Items.Add(ligne)
      Loop
     Catch ex As Exception
    End Try
    
    

     

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire

    • Modifié EhJoe mercredi 23 novembre 2011 09:39 un rajout
    mercredi 23 novembre 2011 09:38
  • Bonjour,

    Vous pouvez utiliser l'une des surcharges de la méthode System.IO.Directory.GetFiles.

    Essayer avec le code suivant :

     

               Dim path = Environment.CurrentDirectory 'Ou un autre répertoire que vous voulez
                Dim searchPattern = "*.xyz" 'votre pattern de recherche
                Dim files = System.IO.Directory.GetFiles(path, searchPattern)
    

    Cordialement.

     



    mercredi 23 novembre 2011 09:46
    Auteur de réponse
  • Bonjour Mourad,

     

    Oui mais... une petite curiosité de compréhension : la variable "files", on la lit comment ensuite pour, par exemple, mettre les fichiers dans une listBox, on ne fait jamais de boucle ?

     

    Cordialement :o)

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 23 novembre 2011 10:06
  • Bonjour,

     

    Pour répondre a Joseph

    Pour ajouter les informations dans une listbox (par exemple) il suffira de faire :

    ListBox1.DataSource = files
    


    et dans ce cas on évitera les boucles

    Sinon il y a toujours possibilité d'utiliser les expression lambda mais cela demandera un minimum de connaissance

     

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    mercredi 23 novembre 2011 10:48
    Auteur de réponse
  • Joseph,

    Le réponse est exactement celle décrite par Xavier, je l'en remercie.

    mercredi 23 novembre 2011 11:07
    Auteur de réponse
  • A Mourad

    c'est bien ce que tu indiques; mais comment je peux utiliser "files" pour supprimer ces fichiers directement

    (avec une seule instruction)?

     


    Alain D
    mercredi 23 novembre 2011 11:53
  • Alain,

    Ne serrait-il pas préférable de supprimer le dossier directement ?

     

    A bientot


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    mercredi 23 novembre 2011 12:05
    Auteur de réponse
  • Je voie que l’exercice consiste en l'utilisation des astuces, je te propose ici une façon de faire qui n'est pas unique (il s'agit d'une astuce !!) :

    Je ne suis pas habitué de codé en VB .NET du coup je te propose le code en C# .NET en attendant de pouvoir le traduire en VB .NET 

                var path = Environment.CurrentDirectory; //Ou un autre répertoire que vous voulez
                var searchPattern = "*.xyz"; //votre pattern de recherche
                var files = System.IO.Directory.GetFiles(path, searchPattern);
    
                files.Select(x => { System.IO.File.Delete(x); return x; }).ToList();
    

     

    Avec une seule instruction 

    Directory.GetFiles(path, searchPattern).Select(x => { System.IO.File.Delete(x); return x; }).ToList();

    mercredi 23 novembre 2011 12:25
    Auteur de réponse
  • Bonjour Xavier,

     

    Je vais essayer ça, une méthode nouvelle :o)

     

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 23 novembre 2011 12:34
  • Mourad,

    Excellent, je ne connaissais pas, y a tellement de truc en double ou en triple... je vais essayer ça, ça a l'air plus pratique que le DIR, merci.

     

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 23 novembre 2011 12:38
  • Mourad, Xavier ...

    Chat marche à la perfecione !

     

    '
    ' exp crée fich + dir fich + del fich ...
    Option Explicit On
    Public Class Form1
    
      Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As Integer
        For i = 1 To 9
          Dim p As New System.IO.StreamWriter(CStr(My.Application.Info.DirectoryPath & "\" & Chr(i + 64) & ".truc"))
          p.Close()
        Next i
      End Sub
    
      Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim path = Environment.CurrentDirectory
        Dim searchPattern = "*.truc"
        Dim files = System.IO.Directory.GetFiles(path, searchPattern)
        ListBox1.DataSource = files
      End Sub
    
      Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim i As Integer
        For i = 0 To ListBox1.Items.Count - 1
          Kill(ListBox1.Items(i))
        Next i
      End Sub
    
    End Class
    
    

    Pour la suppression c'est selon l'expression consacrée, un peu hébraïque pour moi...

     

    Cordialement :o)

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    mercredi 23 novembre 2011 13:05
  • Bonjour,

    Je me suis permis de marquer les réponses de Mourad et Xavier comme elles semblaient convenir. Eventuellement "démarquer" si ce n'est pas le cas.

    En C# (ou VB), il est possible en gros d'utiliser du code en tant que donnée. On peut donc passer du code en tant que paramètre à une fonction. Voir par exemple Array.ForEach : http://msdn.microsoft.com/fr-fr/library/zecdkyw2.aspx (mais c'est sans doute un autre sujet) qui va exécuter une action passée en paramètre pour chaque élément d'un tableau.

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 23 novembre 2011 15:40
    Modérateur
  • A Mourad
    je ne connais pas le C#, si tu arrives à traduire en VB, cela me parait intéressant.

    Alain D
    mercredi 23 novembre 2011 17:46
  • Je proposerais :

      Dim Fichiers() As String = Directory.GetFiles("c:\windows\temp", "*.tst")
            Array.ForEach(Fichiers, Sub(Nom) IO.File.Delete(Nom))
    

    On passe en paramètre à la fonction ForEach, le code qui est à executer pour chacun des éléments du tableau.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 24 novembre 2011 08:51
    Modérateur
  • Bonjour Patrice

    je n'ai pas tout compris :  j'ai "expression attendu" sur "Sub". 


    Alain D
    jeudi 24 novembre 2011 10:02
  • Sans doute un problème de version. Je suis sur VS2010/.NET 4. Dans ton cas cela serait plutôt VS2008/.NET 2.0 ?

    Dans ce cas on peut aussi faire qq chose comme :

    Array.ForEach(IO.Directory.GetFiles("c:\windows\temp", "*.tst"), AddressOf IO.File.Delete)
    

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse papyx jeudi 24 novembre 2011 12:15
    jeudi 24 novembre 2011 10:58
    Modérateur
  • C'est exactement la réponse à ma question.

    Merci Patrice

    Je peux clôturer ce post


    Alain D
    jeudi 24 novembre 2011 12:15