Il faut utiliser stream.BaseLine
. Ce n'est pas aussi pratique que le BinaryReader
mais c'est déjà ça.
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
.
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.
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')); }
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; FileStream inputStream = null; try { inputStream = File.OpenRead(originalFile) using (StreamReader inputReader = new StreamReader(inputStream)) { inputStream = null; using (StreamWriter outputWriter = File.AppendText(outputFile)) { while(null != (tempLineValue = inputReader.ReadLine())) { outputWriter.WriteLine(Regex.Replace(tempLineValue, searchTerm,replaceTerm)); } } } } finally { if (inputStream != null) inputStream.Dispose(); } }
Open a file and replace strings in C# - Stack Overflow Archive du 16/12/2009 le 27/04/2020
Objects should not be disposed more than once Archive le 27/04/2020
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()); }
c# - How to insert lines into the middle of a text file_ - Stack Overflow Archive du 12/01/2013 le 27/04/2020
File.ReadAllLines(nomFichier, Encoding.GetEncoding(1252));
using (var fs = new FileStream("fichier", FileMode.Create, FileAccess.Write, FileShare.None)) { fs.SetLength(15021); }
c# - Create new file with specific size - Stack Overflow Archive du 07/12/2011 le 27/04/2020