2012-09-04 6 views
1

Je lance Visual C# (2010 Express) pour la première fois et j'ai créé un nouveau projet pour WindowsFormsApplication. Aucun code n'a encore été écrit, mais j'ai créé un bouton et l'ai placé sur Form1. Ensuite, j'ai double-cliqué sur le bouton et je suis pris à la partie du code où vous écrivez ce qui se passe lorsque le bouton est enfoncé/cliqué.Comment lire un fichier délimité par des tabulations dans un tableau List?

La première chose que je voudrais faire est de lire les données d'un fichier texte LARGE délimité par des tabulations (30MB). Le fichier texte contient 7 colonnes structurées de données telles que les noms, l'âge, la couleur préférée, l'animal, etc. Rien de compliqué dans le formatage du texte. J'utilise le code ci-dessous:

File.ReadLines(sourceFilePath) 
.Select(line => line.Split('\t')) 
.ToArray(); 

Mais ma question fondamentale est de savoir comment puis-je établir et définir des fichiers et sourcefilepath? Avec le code ci-dessus je reçois « Le nom « Fichier »n'existe pas dans le contexte actuel

+0

Ajoutez 'using System.IO;' à votre classe de formulaire pour accéder à la classe File. – LarsTech

+0

ReadAllLines va créer un tableau d'agitation, délimité par NewLine (\ r \ n). Voulez-vous le diviser par onglet aussi, ou seulement par tabulation? –

Répondre

5

Vous devez ajouter la ligne suivante en haut de votre fichier C#:.

using System.IO; 

Cela permettra à la utilisation de la classe file, qui est dans l'espace de noms System.IO.

en ce qui concerne la définition sourcefilepath, qui est juste une variable, vous pouvez déclarer et mettre à tout le chemin du fichier dont vous avez besoin, par exemple

string sourceFilePath = @"c:\data\file.csv"; 

Notez l'utilisation de @ avant la chaîne littérale; ceci empêche que les barres obliques inverses soient traitées comme le début des séquences d'échappement. Vous pouvez simplement échapper aux bakslashes, par ex.

string sourceFilePath = "c:\\data\\file.csv"; 
0

La classe File réside dans l'espace de noms System.IO. Vous tirez parti dans votre application avec les éléments suivants:

using System.IO; 

En ce qui concerne la définition du contenu de sourcefilepath, vous allez avoir besoin soit à coder en dur la valeur à un emplacement fixe, ce qui est toujours conseillé, ou à concevoir un mécanisme permettant à l'utilisateur de spécifier ce chemin, éventuellement via l'un des divers CommonDialogs disponibles. Certaines recherches sur les CommonDialogs devraient vous aider à pousser un peu plus loin dans le développement de votre projet.

0

Si vous voulez diviser par touche de tabulation, vous pouvez essayer d'utiliser la méthode ReadAllText, puis une méthode Split, où vous définir delimiter (par onglet):

string[] delimitedByTab = File.ReadAllText(@"file").Split('\t').ToArray(); 

Et utiliser System.IO; namespace for File class

Questions connexes