Yaratish : Yangi fayl yaratiladi. Agar bunday fayl allaqachon mavjud bo'lsa, uning ustiga yoziladi
CreateNew : Yangi fayl yaratiladi. Agar bunday fayl allaqachon mavjud bo'lsa, dastur xatolik yuz beradi.
Ochish : faylni ochadi. Agar fayl mavjud bo'lmasa, istisno chiqariladi.
OpenOrCreate : agar fayl mavjud bo'lsa, u ochiladi, agar bo'lmasa, yangisi yaratiladi
Kesish : Agar fayl mavjud bo'lsa, u qayta yoziladi. Fayl faqat yozish uchun ochiladi.
FileStream obyektini yaratishning yana bir usuli File sinfining statik usullaridan iborat:
Birinchi usul FileMode obyekti berilgan faylni ochadi va FileStream fayl oqimini qaytaradi. Ushbu usulda bir nechta haddan tashqari yuklangan versiyalar ham mavjud. Ikkinchi usul o'qish uchun oqimni, uchinchisi esa yozish uchun oqimni ochadi.
Oqimni yopish
FileStream klassi fayl bilan bog'liq barcha resurslarni chiqarish uchun IDisposable interfeysini amalga oshiradi. Shunga ko'ra, FileStream bilan ishlashni tugatgandan so'ng, Dispose usulini chaqirish orqali u bilan bog'langan faylni chiqarish kerak. To'g'ri yopish uchun Dispose usulini chaqiradigan Close() usulini chaqirishingiz mumkin:
Yoki FileStream bilan bog'liq barcha resurslarni avtomatik ravishda chiqaradigan konstruksiyadan foydalanishingiz mumkin:
FileStream xususiyatlari va usullari
FileStream sinfining eng muhim xususiyatlarini ko'rib chiqing :
Length xususiyati : oqim uzunligini baytlarda qaytaradi
Position xususiyati : oqimdagi joriy pozitsiyani qaytaradi
Name xususiyati : FileStream-da ochilgan faylga mutlaq yo'lni qaytaradi
Fayllarni o'qish/yozish uchun FileStream sinfining quyidagi usullaridan foydalanish mumkin :
void CopyTo(Stream destination): joriy oqimdan maʼlumotlarni maqsadli oqimga koʻchiradi
Task CopyToAsync(Stream destination): CopyTo usulining asinxron versiyasi
void Flush(): bufer tarkibini faylga tozalaydi
Task FlushAsync(): Flush usulining asinxron versiyasi
int Read(byte[] array, int offset, int count): Fayldan ma'lumotlarni bayt massiviga o'qiydi va muvaffaqiyatli o'qilgan baytlar sonini qaytaradi. U uchta parametrni oladi:
array- fayldan o'qilgan ma'lumotlar joylashtiriladigan baytlar massivi
offseto'qilgan baytlar joylashtiriladigan massivdagi baytlardagi ofsetni ifodalaydi
count- o'qilishi kerak bo'lgan baytlarning maksimal soni. Agar faylda kamroq bayt bo'lsa, ularning barchasi o'qiladi.
Task ReadAsync(byte[] array, int offset, int count): Read usulining asinxron versiyasi
long Seek(long offset, SeekOrigin origin): oqimdagi pozitsiyani ofset parametrida ko'rsatilgan baytlar soniga qarab o'rnatadi.
void Write(byte[] array, int offset, int count): Bayt massividan faylga ma'lumotlarni yozadi. U uchta parametrni oladi:
array- ma'lumotlar faylga yoziladigan baytlar massivi
offset- massivdagi baytlarda ofset, oqimga bayt yozishni qaerdan boshlash kerak
count- yoziladigan baytlarning maksimal soni
Task WriteAsync(byte[] array, int offset, int count): Write usulining asinxron versiyasi
Fayllarni o'qish va yozish
FileStream bayt darajasidagi fayllarga kirishni ifodalaydi, shuning uchun, masalan, matn fayliga bir yoki bir nechta satrlarni o'qish yoki yozish kerak bo'lsa, u holda bayt massivi maxsus usullar yordamida satrlarga aylantirilishi kerak. Shuning uchun matnli fayllar bilan ishlash uchun boshqa sinflardan foydalaniladi. Shu bilan birga, ma'lum bir tuzilishga ega bo'lgan turli xil ikkilik fayllar bilan ishlashda FileStream ma'lum ma'lumotlarni ajratib olish va uni qayta ishlash uchun juda foydali bo'lishi mumkin. Matnli faylga o‘qish-yozish misolini ko‘rib chiqamiz:
Keling, ushbu misolni tahlil qilaylik. Birinchidan, faylga yo'lni va faylga yozish uchun matnni aniqlaymiz. O'qish va yozishda ham qurilish FileStream ob'ektini yaratish va o'chirish uchun ishlatiladi using, shundan so'ng usul yaratilgan FileStream ob'ektida avtomatik ravishda chaqiriladi Dispose va shu bilan ob'ekt yo'q qilinadi. Fayl operatsiyalari uzoq vaqt talab qilishi va dasturda to'siq bo'lishi mumkinligi sababli, FileStream usullarining asinxron versiyalaridan foydalanish tavsiya etiladi. Yozish ham, o'qish ham kodlash ob'ektidan Encoding.Default foydalanadi System.Text. Bunda biz uning ikkita usulidan foydalanamiz: GetBytes satrdan baytlar massivini olish va baytlar GetString massividan satr olish.
Yozib olingan fayl asosan ikkilik fayldir (matnli fayl emas), garchi unga faqat satr yozsak, bu faylni matn muharririda ochish orqali odam oʻqiy oladigan shaklda koʻrishimiz mumkin. Biroq, agar biz unga tasodifiy baytlarni yozsak, masalan:
Do'stlaringiz bilan baham: |