6
votes

Durée du dossier temporaire conservé?

Je travaille sur un programme qui générera des fichiers temporaires, attendez l'entrée de l'utilisateur sur quelques éléments, puis utilisez ces fichiers temporaires pour une opération.

Je me demandais si je peux vous attendre de manière fiable que ces fichiers temporaires ne disparaissent pas avant que je sache complètement avec eux (par exemple, disparaîtra-ils pendant que l'utilisateur fonctionne?).

Évidemment, je pourrais créer mon propre dossier dans mes appdata et utiliser cela pour des fichiers temporaires. Mais il serait plus facile d'utiliser C # 's chemin.getempfilename () ou chemin.gettempath () + somename . Quand les fichiers seront-ils créés de cette manière être supprimés?

Pour clarifier, je ne cherche pas comment créer des fichiers temporaires, mais plutôt combien de temps les fichiers temporaires créés dans gettempath () sont conservés et si cela serait suffisamment long pour attendre pour la saisie de l'utilisateur avant de les utiliser.


3 commentaires

Le chemin Temp est-il supprimé du tout? Le mien contient des fichiers de plusieurs mois, aussi vieux que cette installation Windows ...


C'est ce que je ne suis pas sûr. Voir mon commentaire sur la réponse de Tim pour voir pourquoi je me méfierais de supposer que si je reçois une réponse concrète ...


En commençant par Windows 10 et Sens de stockage Ceci n'est plus garanti: Stackoverflow.com/a/63848110/67824


5 Réponses :


5
votes

Je ne suis au courant d'aucun processus sous Windows qui supprime automatiquement les fichiers temporaires. L'utilisateur peut avoir un travail de nettoyage configuré, mais vous pouvez raisonnablement vous attendre à ce que vos fichiers soient laissés seuls pendant un jour ou deux au minimum.

Pour comparaison, lorsque vous ouvrez une pièce jointe dans Outlook, il copie la pièce jointe à un fichier temporaire et lance l'application associée. Ces fichiers d'attachement temporaires peuvent être nécessaires pour rester indéfiniment si l'utilisateur ne ferme jamais l'application associée.


2 commentaires

Eh bien, il est raisonnable de supposer que tout ce qui supprime automatiquement les fichiers temporaires ne pouvait pas supprimer des fichiers actuellement ouverts (comme dans votre exemple); Cependant, mes fichiers ne seront pas ouverts par l'application pendant que l'utilisateur fonctionne. J'ai posé cette question parce que j'ai eu des cas où j'ouvre quelque chose de temporaire (semblable à votre exemple Outlook), puis fermez-la, puis si j'essaie d'ouvrir à nouveau le même fichier temporaire - juste quelques secondes après la fermeture - c'est parti. Cela peut être parce que l'application génératrice les enlève, mais je voulais juste m'assurer qu'il n'y avait pas autre chose.


En tant que note, j'ai accepté votre réponse, mais je ne sauvegre pas réellement au répertoire temporaire de mon programme, car j'ai oublié un autre mode qui éventuellement laisser des fichiers là-bas pendant des jours ou des semaines, ou aussi longtemps que l'utilisateur veut, avant Traitement des tâches - Mon propre dossier de cache est donc une meilleure option dans ce cas, je pense. Mais je ne trouve toujours aucune infos affirmant que les fichiers temporaires sont autodélettés, donc je pense que c'était probablement le programme simplement un citoyen logiciel approprié et le nettoyage après elle-même (quelles perspectives devraient probablement faire!)



2
votes

Autant que je sache, les fichiers temporaires s'attarderont jusqu'à ce que vous supprimez, puis vous les nettoyez par programmation, ou l'utilisateur les nettoie (comme à l'aide de l'utilitaire de nettoyage du disque ou de les supprimer manuellement).

Lorsque vous utilisez des fichiers temporaires, je conserve toujours le nom de fichier créé et essayez de supprimer le fichier lorsque j'en ai terminé, sinon j'ai remarqué que j'accumule un grand nombre de fichiers temporaires dans le répertoire Temp. .


2 commentaires

D'accord merci. Malheureusement, la maintien des fichiers ouverte n'est pas une option pour ce programme, cependant.


Ah, vous avez commenté pendant que j'étais édité ce peu, après avoir relu votre question :)



3
votes

C'est complètement sûr et votre instinct est 100% correct - c'est le moyen de gérer les fichiers Temps, tant que vous vous souvenez de les nettoyer par la suite.

appeler gettemppath () ne fait rien de plus que vous diriger vers un endroit sûr pour mettre des fichiers temporaires. C'est l'équivalent moderne d'obtenir la valeur de l'environnement variable chemin . Le répertoire est jamais effacé automatiquement - vous le trouverez souvent rempli d'antique indésirable.


1 commentaires

C'est ce que je m'étais dis; Je voulais juste m'assurer qu'il ne ferait pas sauter dans mon visage. Merci.



2
votes

Accepter avec Tim. Au moins en XP, la responsabilité de nettoyer les fichiers à partir du dossier Temp réside avec le programme qui les mettent là-bas à la 1ère place. Même avec les nouveaux systèmes d'exploitation tels que Vista / 7, je ne pense pas qu'il y ait un nettoyage automatique Windows se produisant pour le dossier% TMP%.


0 commentaires

3
votes

Cela ne sera pas nettoyé par lui-même.

Utilisez Nettoyage de disque Windows pour le faire.


3 commentaires

Excellent! Tant que l'utilisateur ne fonctionne pas au milieu de mon programme, il devrait être complet.


Essayez de démarrer un tas d'applications et de supprimer votre répertoire temporaire pendant qu'ils courent. Faire une note dont les crash.


Gardez une serrure sur vos fichiers, puis ils ne seront pas nettoyés.