lang:csharp:readerwriter
Ceci est une ancienne révision du document !
Table des matières
Lecture de données binaire avec un StreamReader
Il faut utiliser stream.BaseLine
. Ce n'est pas aussi pratique que le BinaryReader
mais c'est déjà ça.
BinaryReader / BinaryWriter
using (BinaryWriter bw = new BinaryWriter(File.Open(fichier, FileMode.Open)))
Pour info, il est possible de faire un Seek
au delà de la fin du fichier et d'écrire. La taille du fichier est automatiquement réajustée.
BaseStream.Length
est automatiquement mis à jour sans avoir besoin d'appeler la méthode Flush
.
Lecture de 5 octets sous forme d'un string
byte[] lecture = new byte[5]; if (iStream.Read(lecture, 0, 5) != 5) { throw new Exception(); } string result = System.Text.Encoding.ASCII.GetString(lecture);
Il n'y a pas besoin du caractère null
en fin de tableau.
<note>Par contre, cette méthode crée un string
qui contient des caractères null
. Pour s'en débarrasser, il peut être utile de faire un
if (result.IndexOf('\0') != -1) { result = result.Substring(0, result.IndexOf('\0')); }
</note>
Remplacement dans un fichier via regex/pattern
Sans réfléchir :
File.WriteAllText("Fichier", Regex.Replace(File.ReadAllText("Fichier"), "Pattern", "Replacement"));
Méthode adaptable pour plusieurs remplacements :
private static void ReplaceTextInFile(string originalFile, string outputFile, string searchTerm, string replaceTerm) { string tempLineValue; using (FileStream inputStream = File.OpenRead(originalFile) ) { using (StreamReader inputReader = new StreamReader(inputStream)) { using (StreamWriter outputWriter = File.AppendText(outputFile)) { while(null != (tempLineValue = inputReader.ReadLine())) { outputWriter.WriteLine(Regex.Replace(tempLineValue, searchTerm,replaceTerm)); } } } } }
Ajout d'un texte à l'intérieur d'un fichier
Pas de méthode miracle malheureusement.
var sb = new StringBuilder(); using (var sr = new StreamReader("inputFileName")) { string line; do { line = sr.ReadLine(); sb.AppendLine(line); } while (!line.Contains("<Sim Properties>")); sb.Append(myText); sb.Append(sr.ReadToEnd()); } using (var sr = new StreamWriter("outputFileName")) { sr.Write(sb.ToString()); }
Chargement d'un fichier texte en mémoire
File.ReadAllLines(nomFichier, Encoding.GetEncoding(1252));
Création d'un fichier d'une taille précise
lang/csharp/readerwriter.1502883350.txt.gz · Dernière modification : 2017/08/16 13:35 de root