2011-06-02 6 views
23

J'ai un nom de fichier pointant vers un fichier texte, y compris son chemin, sous forme de chaîne. Maintenant, je voudrais charger ce fichier .csv dans le flux de mémoire. Comment devrais-je faire ça?comment charger un fichier dans le flux de mémoire

Par exemple, j'ai ceci:

Dim filename as string="C:\Users\Desktop\abc.csv" 
+4

assez semblable à ceci: http://stackoverflow.com/questions/6200329/how-to-load-a-file -from-folder-to-memory-stream-buffer – Tridus

Répondre

26

Vous n'avez pas besoin de charger un fichier dans un MemoryStream.

Vous pouvez simplement appeler File.OpenRead pour obtenir un FileStream contenant le fichier.

Si vous voulez vraiment que le fichier soit dans un MemoryStream, vous pouvez appeler le CopyTo pour copier le FileStream dans un MemoryStream.

+0

Puis-je ajouter le fichier pendant qu'il est dans le flux de fichiers? – Ram

+0

@Ram: Oui, vous pouvez. Appelez 'Open' plutôt que' OpenRead'. Vous pouvez ensuite écrire et lire le même flux. – SLaks

+0

La méthode CopyTo existe à partir de .NET 4. Voir cette réponse http://stackoverflow.com/a/5730893/1589759 –

58
Dim stream As New MemoryStream(File.ReadAllBytes(filename)) 
+2

tout à fait au point :) –

+0

après le chargement d'un fichier dans le flux de la mémoire puis-je ajouter des titres au contenu du fichier? comme les en-têtes dans le fichier xls. – Ram

-1

Vous pouvez le copier dans un flux de fichier comme ceci:

string fullPath = Path.Combine(filePath, fileName); 
FileStream fileStream = new FileStream(fullPath, FileMode.Open); 
Image image = Image.FromStream(fileStream); 
MemoryStream memoryStream = new MemoryStream(); 
image.Save(memoryStream, ImageFormat.Jpeg); 
//Close File Stream 
fileStream.Close(); 
+0

En procédant de la sorte, l'image sera décompressée, puis recomprimé en jpeg. Utilisez simplement la méthode copyto de flux de fichier pour copier le tableau d'octets dans le flux de mémoire. – hcham1

Questions connexes