J'ai un fichier. Lorsque je l'ouvre dans le Bloc-notes, je vois des personnages dans une seule ligne. Cependant, si j'ouvre ce fichier dans une autre application comme WordPad ou Notepad++. Je peux voir des sauts de ligne irréguliers entre les charachters et ils apparaissent dans plusieurs lignes. Ces sauts de ligne apparaît également si je le fais reader.Readline()
. Comment puis-je effectuer Notepad comme la lecture de ligne en C#?C# fichier semblable au bloc-notes lu
Répondre
Désolé pour la deuxième réponse de ma part, mais je viens de réaliser que vous pouvez utiliser pour obtenir PEEK caractère suivant et vérifier si le courant et suivant sont \ r \ n, comme ceci:
var path = "c:/test.txt";
File.WriteAllText(path, "a\nb\r\nc");
using (var stream = File.OpenRead(path))
using (var reader = new StreamReader(stream, Encoding.ASCII))
{
var lineBuilder = new StringBuilder();
string line;
char currentChar;
int nextChar;
while (!reader.EndOfStream)
{
currentChar = (char)reader.Read();
nextChar = reader.Peek();
if (!(currentChar == '\r' && nextChar == '\n'))
{
lineBuilder.Append(currentChar);
}
if((currentChar == '\r' && nextChar == '\n') || nextChar == -1)
{
line = lineBuilder.ToString();
Console.WriteLine(line);
lineBuilder = new StringBuilder();
reader.Read();
}
}
}
De telles différences sont généralement dues à l'ambiguïté de l'encodage du fichier. Si vous voulez que le fichier soit analysé correctement, vous devrez utiliser le bon encodage. Quels personnages causent des problèmes? De plus - si les octets ne sont pas légales dans le codage utilisé, tous les paris sont ouverts ;-P
Vous pouvez spécifier l'encodage lors de la création (par exemple) un StreamReader
sur le fichier:
using (Stream stream = File.OpenRead(path))
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
string line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
Avec la base-64 affichée, le problème est le \r
au milieu de la ligne. Pour lire cela comme une chaîne de base, vous pouvez utiliser:
byte[] data = File.ReadAllBytes(path);
string txt = Encoding.UTF8.GetString(data);
ou tout simplement:
string text = File.ReadAllText("foo.txt");
Cependant, vous aurez toujours des difficultés à afficher cela. Vous pouvez maintenant Split
sur votre choisi fin de ligne (crlf vraisemblablement). StreamReader
est fractionnement sur tout ce qui ressemble comme une fin de ligne.
string[] lines = s.Split(new string[] {"\r\n"}, StringSplitOptions.None);
J'ai essayé tout type de codage défini pour ce fichier, chacun se brise la ligne en deux, Son seul bloc-notes où je le vois comme une seule ligne, souhaite que je pourrais joindre fichier ici. –
En effet. Cela ressemble à quelque chose d'intéressant dans les octets sous-jacents du fichier. Est-ce gros? Vous pouvez poster l'hexagone/base 64 représentation ... –
MjAwOTAzMDR8RVVST3x8MDAwMDJ8RkZGRnwgfEF8U3w3MTB8TUxJICAgfCB8fA0gIHwgLjAwMDAwfCAuMDAwMDB8LjAwMDAwfDIwMDkwMzA0IDA4OjMxOjIzOjYxQU18IHwgfCB8IHwgICAgfHwgICAgfCB8LjAwfCAgIA == –
Si ce n'est pas critique vous pouvez simplement charger tout le texte et divisé en lignes en utilisant une expression régulière ou quelque chose,
var path = "c:/test.txt";
File.AppendAllText(path, "lala\nlala\nlalal");
var text = File.ReadAllText(path);
Console.WriteLine(Regex.Split(text, Environment.NewLine).Length);
Taille du fichier sont dans les concerts, donc je ne peux pas faire ReadAllText –
utilisez
String[] lines = File.ReadAllLines("c:\\text.txt");
Pour extraire toutes les lignes d'un seul coup
- 1. lu. [TableName] au lieu de dbo. [TableName]?
- 2. Quand le fichier web.config est-il lu?
- 3. Lorsqu'un formulaire charge le fichier txt lu dans le tableau
- 4. IMAP dans Php: marquage d'un message non lu/non lu
- 5. Impossible d'avoir C-x-e semblable à Bash dans Zsh
- 6. GUID semblable à YouTube
- 7. C# l'accès au fichier de carte mémoire
- 8. C# Asp.net écrire le fichier au client
- 9. Equivalent C# de Java non lu de PushbackReader()
- 10. Plugin semblable à Ghostdoc pour IntelliJ IDEA
- 11. Socket client lu "se fige"
- 12. Écrire au fichier binaire en C++ et C#
- 13. Google Reader non lu Nombre
- 14. Comment devrais-je imprimer un caractère particulier dans le fichier après avoir lu le fichier?
- 15. Importer un fichier texte au format bizarre en C#
- 16. Accès au fichier refusé, erreur d'application de la console C#
- 17. Ajout d'un objet à un tableau lu à partir d'un fichier
- 18. Fenêtre popup semblable à la fenêtre modale
- 19. Contrôle de saisie semblable à DateTimePicker
- 20. wpf interface semblable à une perspective
- 21. après avoir lu simplement Rails 2
- 22. LINQ au fichier resx?
- 23. StreamReader au fichier?
- 24. java ajouter au fichier
- 25. HTML au fichier image .tiff
- 26. Modifier le format de date lu par MySQL
- 27. Comment acheminer un flux d'entrée vers un fichier compressé tel qu'il est lu avec Java?
- 28. Données POST d'un fichier texte (lu par un client de bureau) vers un serveur ASP .NET
- 29. Accès au fichier refusé dans .NET
- 30. Panneau de défilement semblable à Google Maps dans WPF
Merci pour votre travail –