Je veux lire un fichier mais pas depuis le début du fichier mais à un point spécifique d'un fichier. Par exemple, je veux lire un fichier après 977 caractères après le début du fichier, puis lire les 200 caractères suivants à la fois. Merci.Comment lire un fichier commençant à un point spécifique du curseur en C#?
Répondre
Si vous voulez lire le fichier sous forme de texte, les caractères sauter (non octets):
using (var textReader = System.IO.File.OpenText(path))
{
// read and disregard the first 977 chars
var buffer = new char[977];
textReader.Read(buffer, 0, buffer.Length);
// read 200 chars
buffer = new char[200];
textReader.Read(buffer, 0, buffer.Length);
}
Si vous voulez simplement sauter un certain nombre d'octets (non caractères):
using (var fileStream = System.IO.File.OpenRead(path))
{
// seek to starting point
fileStream.Seek(977, SeekOrigin.Begin);
// read 200 bytes
var buffer = new byte[200];
fileStream.Read(buffer, 0, buffer.Length);
}
using (var fileStream = System.IO.File.OpenRead(path))
{
// seek to starting point
fileStream.Position = 977;
// read
}
si vous voulez lire des types de données spécifiques à partir de fichiers System.IO.BinaryReader
est le meilleur choix. si vous n'êtes pas sûr de fichier encodage utilisé
using (var binaryreader = new BinaryReader(File.OpenRead(path)))
{
// seek to starting point
binaryreader.ReadChars(977);
// read
char[] data = binaryreader.ReadChars(200);
//do what you want with data
}
autre si vous connaissez la taille des caractères de la taille du fichier source sont 1 ou 2 utilisation d'octets
using (var binaryreader = new BinaryReader(File.OpenRead(path)))
{
// seek to starting point
binaryreader.BaseStream.Position = 977 * X;//x is 1 or 2 base on character size in sourcefile
// read
char[] data = binaryreader.ReadChars(200);
//do what you want with data
}
vous pouvez utiliser Linq et tableau de conversion de char à ficeler.
ajouter ces namespace:
using System.Linq;
using System.IO;
alors vous pouvez l'utiliser pour obtenir un tableau de caractères index à partir d'un autant que caractères b de votre fichier texte:
char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(a).Take(b).ToArray();
Ensuite, vous peut avoir une chaîne, comprend des caractères continus de c:
string r = new string(c);
par exemple, j'ai ce texte dans un fichier:
bonjour comment allez-vous?
i utiliser ce code:
char[] c = File.ReadAllText(FilePath).ToCharArray().Skip(6).Take(3).ToArray();
string r = new string(c);
MessageBox.Show(r);
et il montre: comment
Way 2
Très simple: utilisant méthode substring
string s = File.ReadAllText(FilePath);
string r = s.Substring(6,3);
MessageBox.Show(r);
Bonne chance;