Creer un ficher texte

Creer un ficher texte - C#/.NET managed - Programmation

Marsh Posté le 23-06-2016 à 18:54:19    

Bonjour,
je veux créer un fichier texte sur le disque dur c, ajouter du texte. Tous ça marche mais ce que je veux de plus, Si le fichier existe qu'il crée un deuxième. Par ce que maintenant, il ecrit dans le même fichier. Je veux qu'a chaque fois que je crée un , qu'il crée un nouveau. et est ce qu'il y a un moyen de laisser l'ordi ajouter une copie de plus, par exemple le premier s'appel text.txt, le deuxème devra être test1.txt.
Merci d'avance
 
Voilà mon code:
 
private string path = "C:\\Test\\test.txt";
if (!File.Exists(path))
            {
                StreamWriter writer = new StreamWriter(path);
                writer.Write("texte" );
                writer.Close();
            }
            else if (File.Exists(path))
            {
                StreamWriter writer = new StreamWriter(path, true);
                writer.Write("texte" );
                writer.Close();
            }

Reply

Marsh Posté le 23-06-2016 à 18:54:19   

Reply

Marsh Posté le 24-06-2016 à 11:04:38    

Un truc du genre devrait le faire.  
Pas très efficace si tu as une multitude de fichiers avec le même nom et un incrément.  
Si c'était le cas, tu aurais meilleur temps de récupérer l'incrément max existant, par exemple.
 
 

Code :
  1. var fullPath = @"C:\Test\test.txt";
  2. //un petit compteur pour pouvoir incrémenter le nom du fichier
  3. var count = 1;
  4. //récuper "test"
  5. var fileNameOnly = Path.GetFileNameWithoutExtension(fullPath);
  6. //récupérer ".txt"
  7. var extension = Path.GetExtension(fullPath);
  8. //récupérer "C:\\Test
  9. var path = Path.GetDirectoryName(fullPath);
  10. var newFullPath = fullPath;
  11. while (File.Exists(newFullPath))
  12. {
  13.       //si le ficher existe, on ajoute un incrément à "test".  
  14.        var tempFileName = string.Format("{0}({1})", fileNameOnly, count++);
  15.       //on reconstruit le path complet
  16.        newFullPath = Path.Combine(path, tempFileName + extension);
  17. }
  18. using (var writer = new StreamWriter(newFullPath))
  19. {
  20.      writer.Write("texte" );
  21. }


Message édité par deliriumtremens le 24-06-2016 à 11:06:56
Reply

Marsh Posté le 24-06-2016 à 14:06:10    

Merci beaucoup deliriumtremens, ça marchait.

Reply

Marsh Posté le 18-07-2016 à 21:04:30    

Bonjour,
 
La création du fichier ça marchait, mais aussi tôt je voulais chercher su texte a partir de .doc et .pdf, il y a une erreur sur le path disant(path' is an ambiguous reference between 'itextsharp.text.pdf.parser' and 'system.io.path'), ça donne des resolutions comme ajouter using itextsharp ect a coté, mais ça ne règle pas le problème. Ext ce qu'il y a un autre moyen de ne pas utiliser (Patch).
Merci d'adance.

Reply

Marsh Posté le 19-07-2016 à 11:34:10    

"Ext ce qu'il y a un autre moyen de ne pas utiliser (Patch). ". Non, à la place tu dois prendre 2 minutes pour essayer de comprendre ce qui se passe et le corriger.

 

Tu te retrouves avec deux classes (ou namespaces) qui s'appellent Path en même temps, donc le compilo ne sait pas duquel tu veux parler quand tu écris "Path.QuelqueChose".
Une solution est de lui donner l'info en écrivant par exemple :
"System.IO.Path.GetExtension(fullPath);"
Au lieu de "Path.GetExtension(fullPath);" et cie à chaque fois que tu as un truc qui commence par "Path."

 

Evidemment si ça n'est pas le bon, il faut utiliser l'autre possibilité, celle de itextsharp.

 

Et en plus tu as une instance d'objet qui s'appelle path qui peut aussi poser un souci si tu as une classe du même nom (ce qui n'est pas conforme aux pratiques c# mais ton message d'erreur mal tapé comme le reste de ton message laisse un doute) :
var path = Path.GetDirectoryName(fullPath);
renomme la en "directoryName" par exemple pour lever l'ambiguité.


Message édité par TotalRecall le 19-07-2016 à 11:36:15

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 19-07-2016 à 14:18:56    

Merci beaucoup pour les informations, Elle étaient utiles.
Bonne journée,

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed