2017-05-31 4 views
0

Je reçois une erreur dans mon application Windows Mobile lorsque j'écris dans un fichier texte. Je crée d'abord un nom de fichier:Impossible d'utiliser des variables dans le nom de fichier StreamWriter

filename = "IncomingUnit_" + GlobalVar.getDate() + ".txt"; 

Cette imprime correctement sur la console comme «IncomingUnit_2017053111: 22: 57.txt.

Puis j'écris des lignes à ce fichier en utilisant un StreamWriter.

using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filename, true)) 
{ 
    foreach (Record _record in records) 
    { 
     writer.Write(_record); 
    } 
} 

Cela me donne une exception et le fichier n'est pas créé: 'Une première chance exception de type 'System.ArgumentException' a eu lieu dans mscorlib.dll'

Si je prends le GlobalVar.GetDate il crée le fichier et écrit les données.

filename = "IncomingUnit.txt"; 

Comment puis-je insérer la date dans mon nom de fichier?

+0

Si vous souhaitez utiliser la date pour utiliser la chaîne ("aaaaMMjjHHmmss"), créez le nom de fichier – athar13

Répondre

7

Colon Le caractère ":" dans le nom de fichier n'est pas valide.

Il suffit de le remplacer à un caractère valide avant de l'utiliser dans StreamWriter:

filename = filename.Replace(":", "_"); 

According to MSDN, vous ne pouvez pas utiliser les caractères suivants dans les noms:

Tilde (~) 
Number sign (#) 
Percent (%) 
Ampersand (&) 
Asterisk (*) 
Braces ({ }) 
Backslash (\) 
Colon (:) 
Angle brackets (< >) 
Question mark (?) 
Slash (/) 
Plus sign (+) 
Pipe (|) 
Quotation mark (") 
+0

Oui, cela a résolu le problème. Est-il possible d'utiliser le caractère deux-points ou dois-je utiliser un autre caractère comme un tiret? (IncomingUnit_2017053111-22-57.txt) –

+0

@DaleTownsend Non, il n'y a aucun moyen d'utiliser deux-points. Vous devez utiliser un caractère alternatif. –

1

Cela est dû au nom du fichier " IncomingUnit_2017053111: 22: 57.txt "vous avez utilisé, le caractère spécial comme ':" ne peut pas être utilisé pour créer le nom de fichier

+0

Voici la liste complète des caractères réservés dans les noms de fichiers Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#file_and_directory_names – apk

+0

oui, exactement, c'est pourquoi le fichier n'est pas créé, car le nom de fichier contient des caractères réservés utilisés par windows –

1

Les caractères ci-dessous ne permettent pas les caractères. dans un nom de fichier. Vous ne pouvez pas utiliser les caractères suivants n'importe où dans un nom de fichier:

  • Tilde.
  • Signe numérique.
  • Pourcentage.
  • Ampersand.
  • Asterisque.
  • Accolades.
  • Backslash.
  • Colon.