2009-06-02 7 views
3

Je suis en train d'obtenir ce qui suit: [date du jour] ___ [TextFileName] txt du code suivant:Création d'un nouveau fichier txt avec la date à l'avant, C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 

namespace ConsoleApplication29 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      WriteToFile(); 

     } 

     static void WriteToFile() 
     { 

      StreamWriter sw; 
      sw = File.CreateText("c:\\testtext.txt"); 
      sw.WriteLine("this is just a test"); 
      sw.Close(); 
      Console.WriteLine("File created successfully"); 



     } 
    } 
} 

J'ai essayé de mettre en DateTime.Now.ToString() mais je ne peux pas combiner les chaînes.

Quelqu'un peut-il m'aider? Je veux la date en avant du titre du nouveau fichier texte que je crée.

Répondre

20
static void WriteToFile(string directory, string name) 
{ 
    string filename = String.Format("{0:yyyy-MM-dd}__{1}", DateTime.Now, name); 
    string path = Path.Combine(directory, filename); 
    using (StreamWriter sw = File.CreateText(path)) 
    { 
     sw.WriteLine("This is just a test"); 
    } 
} 

Pour appeler:

WriteToFile(@"C:\mydirectory", "myfilename"); 

note quelques petites choses:

  • Indiquez la date avec une chaîne de format personnalisé et évitez d'utiliser des caractères illégaux dans NTFS.
  • Préfixe les chaînes contenant des chemins avec le marqueur littéral de chaîne '@', de sorte que vous n'ayez pas à échapper les barres obliques inverses dans le chemin.
  • Combinez les parties de chemin avec Path.Combine() et évitez de déraper avec les séparateurs de chemin.
  • Utilisez un bloc using lors de la création du StreamWriter; quitter le bloc mettra le StreamWriter et fermera le fichier automatiquement pour vous.
+0

Souhaite que je pourrais plus de +1 à ce sujet. Vos excellentes notes donnent les réponses derrière la réponse. – JeffH

+0

merci beaucoup ... cela a beaucoup aidé – yeahumok

+0

Pas besoin d'un StreamWriter: File.WriteAllText (chemin, "Ceci est juste un test"); –

12

Vous souhaitez créer un format de chaîne personnalisé sur DateTime.Now. Vous pouvez utiliser String.Format() pour combiner les résultats de cela avec votre nom de fichier de base.

Pour ajouter sur le chemin d'accès au nom de fichier, utilisez Path.Combine().

Enfin, utilisez un bloc à l'aide() pour fermer correctement & disposer de votre StreamWriter lorsque vous avez terminé avec elle ...

string myFileName = String.Format("{0}__{1}", DateTime.Now.ToString("yyyyMMddhhnnss"), "MyFileName"); 
strign myFullPath = Path.Combine("C:\\Documents and Settings\\bob.jones\\Desktop", myFileName) 
using (StreamWriter sw = File.CreateText(myFullPath)) 
{ 
    sw.WriteLine("this is just a test"); 
} 

Console.WriteLine("File created successfully"); 

Edit: échantillon fixe pour tenir compte de chemin de « C: \ Documents and Settings \ bob.jones \ Desktop »

+0

myFileName = String.Format ("{0} __ {1}", DateTime.Now.ToString ("yyyyMMddhhnnss"), " MyFileName "); StreamWriter sw = Fichier.CreateText (monNomFichier); – CSharpAtl

+0

cela fonctionne pour la plupart ... mais comment puis-je spécifier le chemin exact dans lequel ce fichier .txt doit être créé? par exemple, je veux que ce fichier .txt soit créé sur C: \\ Documents and Settings \\ bob.jones \\ Desktop comment devrais-je le spécifier? – yeahumok

+0

+1 pour effacer les caractères non numériques, éventuellement illégaux dans les caractères des noms de fichiers via le formatage. – JeffH

1

Essayez ceci:

string fileTitle = "testtext.txt"; 
string fileDirectory = "C:\\Documents and Settings\username\My Documents\"; 
File.CreateText(fileDirectory + DateTime.Now.ToString("ddMMYYYY") + fileTitle); 

?

+3

Gardez à l'esprit qu'un DateTime peut contenir des Caractères non autorisés dans un Chemin, par exemple la barre oblique/que certaines cultures utilisent comme séparateur. –

+0

Très vrai! Édité :) –

0

Pour répondre à la question dans votre commentaire sur @Scott Ivey's answer: pour spécifier où le fichier est écrit, précédez le chemin souhaité au nom du fichier avant ou dans l'appel à CreateText().

Par exemple:

String path = new String (@"C:\Documents and Settings\bob.jones\Desktop\"); 
StreamWriter sw = File.CreateText(path + myFileName); 

ou

String fullFilePath = new String (@"C:\Documents and Settings\bob.jones\Desktop\"); 
fullFilePath += myFileName; 
StreamWriter sw = File.CreateText(fullFilePath); 
chaîne
Questions connexes