Arrêter la génération du duplicata du file de sortie

J'ai une application dans laquelle je génère un rapport à la fin de tous les matériaux, en appuyant sur le button Créer un rapport. Le rapport est généré au format Excel. Le problème est que chaque fois que je crée un rapport, je peux créer un autre rapport portant le même nom sur le même location. Il remplace fondamentalement le premier rapport.

Je souhaite donner à l'user une boîte indiquant que vous pouvez générer un rapport portant le même nom ou que le nom existe et que vous choisissez un autre nom.

Merci pour l'aide!

Juste avant de sauvegarder le file, vous devez savoir quel Nom de file vous allez save. Si c'est le cas, testez simplement si le file existe déjà. Si c'est le cas, requestz à l'user un nouveau nom et enregistrez-le comme nouveau nom, par exemple

ssortingng filename = @"C:\File.txt"; if(File.Exists(filename)){ // Prompt for new one. // save the report to the new name instead. }else { // save to filename } 

Que diriez-vous avant de sauvegarder un file, vérifiez si le file avec ce nom existe déjà et, s'il le fait, vous proposez de renommer le file. Quelque chose comme ça:

 if(File.Exists(proposedFileName)){ showDialog("file exists, please choose other name"); } 

Je fais toujours ce que suggère DarkXphenomenon, j'ajoute un timestamp dérangé au nom de file de la forme:

 <filename>_YYMMDD_HHMMSS.ext 

Bien que cela ne résiste à aucune situation, il présente de nombreux avantages:

  1. C'est simple, et ça marche

  2. Cela m'empêche d'avoir à écrire dans toutes sortes de gyrations pour aller et venir avec l'user sur le nom, l'écrasement, le renommage, l'annulation, etc. Généralement dans le code qui n'a jamais été conçu pour avoir une interface user.

  3. Cela rend l'automation beaucoup plus facile.

  4. Il facilite les tests.

  5. Cela rend le diagnostic des problèmes d'users plus facile: il n'y a pas de question sur le moment où un file a été créé ou dans quel ordre ils ont été créés.

Avant de créer le rapport, vous pouvez itérer à travers les files existants et vérifier si le nom existe déjà et donner un message d'erreur approprié.

  ssortingng newFileName = "new file"; ssortingng[] fileNames = Directory.GetFiles("path"); foreach (ssortingng file in fileNames) { if (file == newFileName) { MessageBox.Show("Error"); break; } }