2011-01-13 7 views
15

J'ai plusieurs octets [] représentant des pdf. Chaque tableau d'octets doit être chargé au début de l'application et affiché sous forme de vignette sur mon interface graphique. Jusqu'à présent, j'ai réussi à écrire les fichiers dans un emplacement temporaire en utilisant:Où écrire mes fichiers temporaires?

System.IO.Path.GetTempPath(); 

Ensuite, en utilisant ce chemin que je reçois tous les fichiers PDF, les écrire en utilisant

System.IO.File.WriteAllBytes(fileName, arrayOfPdfs[i]); 

puis accédez à ce répertoire, obtenir tous les fichiers pdf et les transformer en vignettes dans mon application. Le truc, c'est que je ne veux que les fichiers PDF que je viens de mettre à l'emplacement temporaire, alors comment puis-je stocker les fichiers PDF, ou même où puis-je les stocker afin que je sache quand je les les vignettes, les fichiers que je suis en train de lire sont ceux que je viens d'écrire? C'est ainsi que je peux être sûr que l'utilisateur ne regarde que les pdfs pertinents qui se rapportent à leur recherche sur mon système.

Merci.

Répondre

7

Je recommande à vos utilisateurs ApplicationData/LocalApplicationData dossier fourni par le système d'exploitation pour votre application ..

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

Bien sûr, si le stockage n'a pas besoin de persister très longtemps (vraiment temporaire) alors vous pouvez utiliser le dossier temporaire et créez un dossier à l'intérieur pour isoler vos fichiers.

+1

Mais cela pourrait ramener le dossier C: defaultuser, auquel tout le monde n'a pas accès en écriture. – Fandango68

0

Utilisez Path.GetTempFileName et gardez trace des fichiers temporaires que vous avez alloués pendant la session. Vous devriez nettoyer quand votre programme se termine.

0

Vous pouvez:

  • Enregistrez le moment de la création du premier et dernier élément, puis uniquement modifier les fichiers qui ont été créés dans cette fenêtre de création
  • Déplacer les fichiers vers aa dossier de maintien, créer les vignettes puis déplacez-les dans le dossier dans lequel ils sont censés se trouver, en veillant à ce que le dossier de stockage soit vide à la fin de l'exécution.
1

Pourriez-vous créer un sous-répertoire dans le chemin Temp?

string dir = System.IO.Path.GetTempPath() + "\\<searchstring>;

26

Construire un répertoire nommé de façon aléatoire dans le répertoire temporaire de base:

string directoryName = Path.GetRandomFileName(); 
Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), directoryName)); 

stocker vos fichiers là-dedans.

Questions connexes