Comment lire un fichier dans une chaîne avec CR/LF-elle préservée?

Si j'ai posé la question "comment lire un fichier dans une chaîne", la réponse serait évidente. Néanmoins, voici les captures avec CR/LF préservé.

Le problème est, File.ReadAllText bandes de ces personnages. StreamReader.ReadToEnd juste converti LF en CR pour moi, ce qui a conduit à longue enquête où j'ai un bug assez évident code 😉

Donc, en résumé, si j'ai un fichier contenant foo\n\r\nbar je voudrais obtenir foo\n\r\nbar (c'est à dire exactement le même contenu), pas foo bar, foobar, ou foo\n\n\nbar. Est-il prêt à utiliser .Net espace?

Le résultat doit être toujours seule chaîne de caractères contenant le fichier en entier.

Pourquoi ne pas vous traiter comme byte[]? Fichier.ReadAllBytes etc
Pas sûr.. mais, \n\r\n de saut de Ligne est - retour Chariot - saut de Ligne. Alors, quand il est lu dans.. les chances sont que c'est juste la suppression de votre balançant saut de ligne au début en faveur du retour Chariot - saut de Ligne combinaison. Je ne suis pas vraiment un expert sur le fonctionnement interne de .NET StreamReader si 🙁
quelque chose comme new string(System.IO.File.ReadAllBytes(filename).Select(b => (char)b).ToArray())? Quelque part encore \n est converti de toute façon, je vais enquêter davantage.
Non exigence d'une norme standard de routine, ne fonctionne pas, n'est pas une surprise est-il? Vous avez dit le Texte, il fait ce que vous avez dit.

OriginalL'auteur greenoldman | 2012-11-22