Outils pour utilisateurs

Outils du site


lang:csharp:readerwriter

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.

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'));
}

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;
    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

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());
}

c# - How to insert lines into the middle of a text file_ - Stack Overflow Archive du 12/01/2013 le 27/04/2020

Chargement d'un fichier texte en mémoire

  File.ReadAllLines(nomFichier, Encoding.GetEncoding(1252));

Création d'un fichier d'une taille précise

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

lang/csharp/readerwriter.txt · Dernière modification : 2020/04/27 08:04 de root