La première chose à savoir est que la classe FileStream fonctionne sur des octets et des tableaux d'octets
Introduction aux constructeurs couramment utilisés
Le constructeur le plus simple n'a que deux paramètres, à savoir le nom de fichier et la valeur d'énumération FileMode
FileStream(fliename , FileMode.<Member>)
Un autre constructeur couramment utilisé a trois paramètres, le troisième paramètre est un membre de l'énumération FileAccess, qui spécifie le rôle du flux
FileStream(fliename , FileMode.<Member> ,FileAccess.<Member>)
Membres d'énumération FileMode:
Membre | Le fichier existe | Le fichier n'existe pas |
Ajouter | Ouvrez le fichier, le flux pointe vers la fin du fichier et ne peut être utilisé qu'en conjonction avec l'énumération FileAccess.Write | Créez un nouveau fichier. Ne peut être utilisé qu'en conjonction avec l'énumération FileAccess.Write |
Créer | Supprimez le fichier, puis créez un nouveau fichier | Créer un nouveau fichier |
Créer un nouveau | Lancer l'exception | Créer un nouveau fichier |
Ouvert | Ouvrez le fichier, le flux pointe vers le début du fichier | Lancer l'exception |
OpenOrCreate | Ouvrez le fichier, le flux pointe vers le début du fichier | Créer un nouveau fichier |
Tronquer | Ouvrez le fichier et effacez son contenu. Le flux pointe vers le début du fichier, en conservant la date de création d'origine du fichier | Lancer l'exception |
Membres de l'énumération FileAccess:
Membre | Explication |
Lis | Ouvrir le fichier en lecture seule |
Écrire | Ouvrir le fichier en écriture uniquement |
Lire écrire | Ouvrir le fichier pour lire et écrire |
1. Emplacement du fichier
La classe FileStream gère un pointeur de fichier interne, qui pointe vers l'emplacement dans le fichier pour la prochaine opération de lecture et d'écriture. Dans la plupart des cas, lorsque vous ouvrez un fichier, il pointe vers le début du fichier, mais vous pouvez modifier ce pointeur, la méthode pour atteindre cette fonction est la méthode Seek ().
La méthode Seek () a deux paramètres: le premier paramètre spécifie la distance de déplacement du pointeur de fichier (en octets). Le deuxième paramètre spécifie la position de départ pour démarrer le calcul, exprimée en tant que valeur de l'énumération SeekOrigin. L'énumération SeekOrigin contient 3 valeurs: Begin, Current et End.
Par exemple:
FileStream file = File.OpenRead("config.txt");
file.Seek(6,SeekOrigin.Begin);//将文件指针移动到文件的第六个字节处,其起始位置就是文件的第一个字节
file.Seek(6,SeekOrigin.Current);//将指针从当前位置移动6个字节
file.Seek(-6,SeekOrigin.End);//将指针移动到文件的倒数第6个字节
2. Lisez les données
Utilisez la méthode Read (): lisez les données du fichier, puis écrivez les données dans un tableau d'octets.
Read () a trois paramètres: le premier paramètre est le tableau d'octets entrant, qui est utilisé pour stocker les données dans l'objet FileStream, le deuxième paramètre est la position dans le tableau d'octets pour commencer à écrire des données, généralement 0, le troisième Les paramètres spécifient le nombre d'octets à lire dans le fichier
FileStream file = new FileStream("home.txt",FileMode.Open);
byte[] byteData = new byte[1024];
file.Seek(10,SeekOrigin.Begin);
file.Read(byteData,0,1024);//从home.txt文件的第10个字节开始读取1024个字节写入byteData字节数组
3. Écrire des données
Utilisez la méthode Write (): lisez les données du tableau d'octets, puis écrivez les données dans le fichier.
Comme la méthode Read (), la méthode Write () a également trois paramètres
Dans l'exemple ci-dessus, 1024 octets ont été lus à partir du texte de home.txt dans le tableau d'octets byteData, et nous allons écrire les données de ce tableau dans un nouveau fichier
FileStream newFile = new FileStream("Temp.txt",FileModel.Create);
newFile.Seek(0,SeekOrigin.Begin);
newFile.Write(byteData,0,byteData.Length);//将byteData字节数组里的数据写入到Temp.txt文件中,从第0个字节位置开始