FileStream. Faylni o’qish va yozish
Filestream Yaratish
Ob'ektni yaratish uchun FileStream siz ushbu sinfning dizaynerlari va fayl sinfining statik usullaridan foydalanishingiz mumkin. FileStream dizaynerlari juda ko'p Yuklangan versiyalarga ega, ulardan faqat bittasi, eng oddiy va eng ko'p ishlatiladigan:
FileStream(string filename, FileMode mode)
Bu erda dizayner ikkita parametrga o'tadi: faylga yo'l va FileMode ro'yxati. Ushbu ro'yxat faylga kirish rejimini ko'rsatadi va quyidagi qiymatlarni qabul qilishi mumkin:
Append: agar fayl mavjud bo'lsa, matn faylning oxiriga qo'shiladi. Agar fayl bo'lmasa, u yaratiladi. Fayl faqat yozish uchun ochiladi.
Yaratish: yangi fayl yaratiladi. Agar bunday fayl allaqachon mavjud bo'lsa, u yoziladi
CreateNew: yangi fayl yaratiladi. Agar bunday fayl allaqachon mavjud bo'lsa, u holda dastur xato chiqaradi
Ochiq: faylni ochadi. Agar fayl mavjud bo'lmasa, istisno chiqariladi
OpenOrCreate: agar fayl mavjud bo'lsa, u ochiladi, agar bo'lmasa-yangi yaratilgan
Truncate: agar fayl mavjud bo'lsa, u qayta yoziladi. Fayl faqat yozish uchun ochiladi.
Ob'ektni yaratishning yana bir usuli FileStream fayl sinfining statik usullarini ifodalaydi:
FileStream File.Open(string file, FileMode mode);
FileStream File.OpenRead(string file);
FileStream File.OpenWrite(string file);
Birinchi usul filemode ob'ektini hisobga olgan holda faylni ochadi va FileStream fayl oqimini qaytaradi. Ushbu usul shuningdek, bir nechta haddan tashqari Yuklangan versiyalarga ega. Ikkinchi usul o'qish uchun oqimni ochadi, uchinchisi esa yozish uchun oqimni ochadi.
Filestreamning xususiyatlari va usullari
Filestream sinfining eng muhim xususiyatlari va usullarini ko'rib chiqing:
Length xususiyati: baytda oqim uzunligini qaytaradi
Mulk holati: oqimdagi joriy pozitsiyani qaytaradi
void CopyTo (Stream destination): hozirgi oqimdan ma'lumotlarni destination oqimiga ko'chiradi
CopyToAsync(Stream destination) vazifasi: CopyToAsync usulining asenkron versiyasi
int Read(byte[] array, int offset, int count): fayldan ma'lumotlarni baytlar qatoriga o'qiydi va muvaffaqiyatli O'qilgan baytlar sonini qaytaradi. Uchta parametrni qabul qiladi:
array-baytlar qatori, fayldan o'qiladigan ma'lumotlar joylashtiriladi
offset bir bayt ofset array qator bir ofset ifodalaydi, qaysi bayt joylashtirilgan bo'ladi
hisoblash-o'qish uchun mo'ljallangan baytlarning maksimal soni. Faylda kam bayt bo'lsa, ularning barchasi o'qiladi.
Bu bizning bemorlarimiz va xodimlarimiz uchun katta sharaf.
uzoq ko'rish (uzoq ofset, seekorigin kelib chiqishi): ofset parametrida ko'rsatilgan bayt soniga qarab o'zgarib turadigan oqimdagi pozitsiyani o'rnatadi.
void yozish(byte[] array, int offset, int count): bayt qator ma'lumotlar faylga yozadi. Uchta parametrni qabul qiladi:
array-ma'lumotlar faylga yoziladigan baytlar qatori
offset-array qator bayt ofset, qaerda oqimi bayt yozishni boshlanadi
hisoblash-yozish uchun mo'ljallangan baytlarning maksimal soni
Bu bizning bemorlarimiz va xodimlarimiz uchun katta sharaf.
Fayllarni o'qish va yozish
FileStream bayt darajasida fayllarga kirishni anglatadi, shuning uchun, masalan, matn faylida bir yoki bir nechta satrlarni o'qish yoki yozish kerak bo'lsa, bayt qatori maxsus usullar yordamida satrlarga aylantirilishi kerak. Shuning uchun, matn fayllari bilan ishlash uchun boshqa sinflar ishlatiladi.
Shu bilan birga, ma'lum bir tuzilishga ega bo'lgan turli xil ikkilik fayllar bilan ishlashda, FileStream axborotning muayyan qismlarini olish va uni qayta ishlash uchun juda foydali bo'lishi mumkin.
Keling, matn faylida o'qish-yozish
using System;
using System.IO;
namespace HelloApp
{
class Program
{
static void Main(string[] args)
{
// fayl uchun katalog yaratish
string path = @"C:\SomeDir2";
DirectoryInfo dirInfo = new DirectoryInfo(path);
if (!dirInfo.Exists)
{
dirInfo.Create();
}
Console.WriteLine ("faylga yozish uchun qatorni kiriting:");
string text = Console.ReadLine();
// faylga yozish
using (FileStream fstream = new FileStream($"{path}\note.txt", FileMode.OpenOrCreate))
{
// bayt ichiga mag'lubiyatga aylantirish
byte[] array = System.Text.Encoding.Default.GetBytes(text);
// faylga bayt qator yozib
fstream.Write(array, 0, array.Length);
Console.WriteLine ("matn faylga yozilgan");
// fayldan o'qish
using (FileStream fstream = File.OpenRead($"{path}\note.txt"))
{
// bayt ichiga mag'lubiyatga aylantirish
byte[] array = new byte[fstream.Length];
// ma'lumotlarni o'qish
fstream.Read(array, 0, array.Length);
// chiziqdagi baytlarni dekodlash
string textFromFile = System.Text.Encoding.Default.GetString(array);
Console.WriteLine ($"fayldan matn: {textFromFile}");
Console.ReadLine();
Keling, ushbu misolni ko'rib chiqaylik. Birinchidan, fayl uchun papka yaratiladi. Bundan tashqari, operatsion tizim darajasida oldindan belgilangan kataloglarda yozish uchun cheklovlar belgilanishi mumkin va bunday kataloglarda faylni yaratish va yozishga harakat qilsak, biz xato qilamiz.
Do'stlaringiz bilan baham: |