IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Suppression et copie d'un fichier au bout de 7 jours


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Suppression et copie d'un fichier au bout de 7 jours
    Bonjour
    Je souhaite copier le contenu d'un fichier que je généré avec une fonction dans un autre dossier aussi le supprimer au bout de 7 jours.
    Avez une idée comment procéder ?
    Merci @ vous

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Pour la copie => File.Copy ou stream.CopyToAsync

    pour la suppression tous les 7 jours il y a plein de solution, tout dépend de ton infra (as tu un serveur ?) par exemple tu pourrais utiliser les taches planifiées, développer un service windows ... à voir mais il faudra précisez un peu le contexte je pense pour que tu es des réponses pertinantes.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci J@ck
    Merci pour la réponse
    alors le projet c'est un service windows qui tourne en tache de fond toute les 10 mn et ca fonctionne, donc il fait le travail censé faire et génère entre autre des logs.
    le souhait est de tous les lundi à 08h, le servie windows supprime et copie un dossier et le met dans une sauvegarde.

    j'ai une fonction de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function CopyDeleteDossier()
        Try
          My.Computer.FileSystem.CopyDirectory("C:\Users\Untel\Desktop\\SLOG", "C:\Users\Untel\Desktop\Sauvegarde")
          For Each file As IO.FileInfo In New IO.DirectoryInfo("C:\Users\Untel\Desktop\Delete").GetFiles("*.txt")
          If (Now - file.CreationTime).Days > 7 Then file.Delete()
          Next
        Catch ex As Exception
     
        End Try
      End Function
    Merci @ vous

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Je sais c'est lundi mais du coup je vois pas ce qu'il te bloque ?
    Tu as apparemment une fonction qui fait ce que tu attends ! tu n'as donc plus qu'a l’exécuter au moment voulut.
    En plus tu as un service Windows qui tourne ne permanence, j'ai envie de dire y a plus qu'a !

    Apparemment ton service lance une tache toutes les 10 minutes, donc maintenant tu n'a qu'a fait en sorte qu'il lance, en plus, une tache toutes les semaines.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 154
    Points : 3 667
    Points
    3 667
    Par défaut
    Tu peux faire un task scheduler qui supprimera ton fichier pas besoin de vraiment programmer

    http://www.howtogeek.com/201930/how-...on-a-schedule/

  6. #6
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Ok Jack
    Désolé de ne pas pouvoir répondre un peu plutôt.
    au fait le service windows tourne h24 et je n'ai pas à le contrôler, le souhait c'est que a travers une fonction de delete;, quand je dépasse 7 jours, je supprime ce fichier qui devient volumineux...
    merci

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Citation Envoyé par souhail72 Voir le message
    Désolé de ne pas pouvoir répondre un peu plutôt.
    au fait le service windows tourne h24 et je n'ai pas à le contrôler, le souhait c'est que a travers une fonction de delete;, quand je dépasse 7 jours, je supprime ce fichier qui devient volumineux...
    merci
    Ok ça c'est le besoin, mais quel est le problème ? qu'est ce qu'il t'empêche de le faire ? le lien de DuyBinh ne t'as pas aidé à avancé ?
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  8. #8
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut @ Duybon
    Merci pour la réponse par contre je souhaite vraiment une fonction intégré dans le service, pour les task shudler, j'y ai pensé mais ça me convient pas ...

    merci

  9. #9
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Ok
    Merci Jack
    le lien de duby propose des shudler, c'est la derniére solution que je metterai en place par contre , j'aimerai bien une fonction qui me supprime les fichiers tous les 7 jours et je bloque a ce niveau.
    Sou

  10. #10
    Membre expert
    Profil pro
    Dév
    Inscrit en
    Juin 2007
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dév

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 154
    Points : 3 667
    Points
    3 667
    Par défaut
    Ben fais une persistance de donnée si tu utilises pas de SGBD, via un JSON ou XML où tu vas lister ta liste de fichier et la date de création. Une fois parsé, tu regardes si ça fait 7 jours que le fichier a été créé. Si oui, File.Delete... Bref comme le disais J@ck, rien de t'empêche de faire ça. Pour l'inclure dans ton service, passe par un thread qui se déclenche disons tous les 30 minutes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    static void Main(string[] args)
    {
    	Thread thread= new Thread(new ThreadStart(InvokeMethod));
    	thread.Start();
    }
     
    static void InvokeMethod()
    {
            bool noFileFound = true;
    	while (noFileFound )
    	{
    		if(/*poser sa condition */) File.Delete...
                   noFileFound = false;
     
    		Thread.Sleep(1000 * 60 * 30); // 30 Minutes
    		//parser la liste des fichiers et regarder s'il y en a à supprimer
     
     
    	}
    }

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Je pensais que tu avais ta fonction de prête =>

    Citation Envoyé par souhail72 Voir le message
    Merci pour la réponse
    ...
    j'ai une fonction de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function CopyDeleteDossier()
        Try
          My.Computer.FileSystem.CopyDirectory("C:\Users\Untel\Desktop\\SLOG", "C:\Users\Untel\Desktop\Sauvegarde")
          For Each file As IO.FileInfo In New IO.DirectoryInfo("C:\Users\Untel\Desktop\Delete").GetFiles("*.txt")
          If (Now - file.CreationTime).Days > 7 Then file.Delete()
          Next
        Catch ex As Exception
     
        End Try
      End Function
    Merci @ vous
    Ce qu'il faut comprendre c'est que tu as 2 choses à faire, la première c'est de préparer une fonction qui réalise ce que tu veux, puis dans un 2ème temps tu devras intégrer ta fonction à ton service pour faire en sorte que la fonction s’exécute au bon moment. Donc ou ce situe le problème ? supprimer un fichier ou le copier ? ou alors déclencher l’exécution de la méthode toutes les semaines ?
    Tu vas surement vouloir me répondre "les 2 !", mais dans ce cas on traitera les problèmes les un après les autres et nous commencerons par la fonction. Donc la fonction que tu donnes ci-dessus qu'est ce qu'il ne va pas ?

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  12. #12
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci pour vos explications
    J'ai refait une fonction qui copie les fichiers text vers un fichier source et supprime ceux qui sont dans le backup
    ça marche super bien, il me reste juste a traduire que les fichier dont la date est supérieur à la date système de 7jours doivent être supprimés
    le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Public Sub CopyDeleteDossier()
     
        Dim source As String = "C:\Users\Untel\Desktop\\SLOG"
        Dim backup As String = "C:\Users\Untel\Desktop\Sauvegarde"
        Try
          Dim txtListe As String() = Directory.GetFiles(source, "*.txt")
     
          ' Copie des fichiers texte.
          For Each f As String In txtListe
            Dim fNom As String = f.Substring(source.Length + 1)
            Try
              File.Copy(Path.Combine(source, fNom), Path.Combine(backup, fNom))
            Catch ErreurCopy As IOException
              LogStartStop("Erreur de copie")
            End Try
          Next
     
          'Suppression du fichier(fichier)
          For Each fichier As String In txtListe
            File.Delete(fichier)
          Next
     
        Catch ErreurChemin As DirectoryNotFoundException
          LogStartStop("Erreur de chemin")
        End Try
     
      End Sub
    la partie qui m’intéresse est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For Each fichier As String In txtListe
            File.Delete(fichier)
          Next
    Comment lui dire ??

    Merci @ vous

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Pour obtenir les infos sur un fichier utilise la classe FileInfo.
    Tu auras ainsi accès à la date de création, la date de dernier modif ....

    Ensuite tu soustrais la date de création à la date du jour pour obtenir un TimeStamp dans lequel tu auras le nombre de jour d'écart.

    tu devrais arriver à un truc comme ça (je suis c# à la base) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each fichier As String In txtListe
        If (New FileInfo(fichier).CreationTime - DateTime.Today).Days >= 7
            File.Delete(fichier)
        End IF
    Next

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  14. #14
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Ok
    Merci Jack c'est cool
    je teste et je reviens vers vous merci

  15. #15
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci
    Bonjour Messieurs,
    La fonction marche super bien. Merci pour votre soutien.
    Par contre j'ai une question si vous avez une idée : Avez déjà travaillé avec web service, je m'explique :
    Pour une fonctionnalité de mon service Windows, je doit faire appel a un web service ? Comment procéder ?
    Merci

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Comme pour les dll, tu fais clique droit sur le projet dans l'explorateur de solution de visual studio, puis 'Ajouter une référence de service' au lieu de 'Ajouter une référence'.

    bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  17. #17
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut ok
    Merci
    Ok pour intégrer le service et le référencer mais comment en ligne de code je me rattache à mon service web?

  18. #18
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Une référence de service s'utilise comme une référence, une fois ajoutée à la liste de tes références tu auras accès à son espace de nom et donc à toutes les classes que le service fournit... mais peut être que tu n'as jamais référencé une dll ?

    D'ailleurs je crois que lorsque tu ajouteras l'url du service lorsque tu vas le référencer tu verra ce qu'il te propose.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  19. #19
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut ok
    Je vois le binz, comme une DLL , je crée un objet a partir du service proposé.
    j'appelle les méthodes de la même manière que les DLL. Merci bcp

  20. #20
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci
    Encore une question ?
    Quand je supprime c'est vers la corbeille or je souhaite supprimer définitivement sans avoir a contrôler la corbeille surtout que j'ai des fichiers assez volumineux ? merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/08/2007, 00h40
  2. Copie d'un fichier sans montage avec Samba
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 5
    Dernier message: 14/07/2005, 11h31
  3. Suppression de lignes dans un fichier sous dos
    Par ducho dans le forum Windows
    Réponses: 2
    Dernier message: 16/05/2005, 10h20
  4. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 10h36
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo