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
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
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
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 :
Merci @ vous
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
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
Tu peux faire un task scheduler qui supprimera ton fichier pas besoin de vraiment programmer
http://www.howtogeek.com/201930/how-...on-a-schedule/
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
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
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
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 } }
Je pensais que tu avais ta fonction de prête =>
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
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 :
la partie qui m’intéresse est :
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
Comment lui dire ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 For Each fichier As String In txtListe File.Delete(fichier) Next
Merci @ vous
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
Merci Jack c'est cool
je teste et je reviens vers vous 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
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
Merci
Ok pour intégrer le service et le référencer mais comment en ligne de code je me rattache à mon service web?
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager