Avatar ·

كيف تقرأ كل محتوى InputStream إلى سلسلة نصية في Kotlin؟

مرحباً بالجميع! بدأت مؤخراً في تعلم Kotlin وواجهت مهمة: أحتاج لقراءة بيانات من InputStream (مثلاً من ملف أو استجابة شبكة) وتحويلها إلى سلسلة نصية String. المشكلة أنني معتاد على Java حيث يتطلب ذلك كتابة الكثير من الكود المتكرر مع حلقات وStringBuilder ومخازن مؤقتة. في Kotlin يبدو أن هناك طرقاً أكثر إيجازاً، لكنني لا أجد مثالاً واضحاً. إليك ما جربته: ```kotlin fun readFromStream(stream: InputStream): String { val bytes = stream.readBytes() return String(bytes) } ``` لكن هذا يسبب ارتباكاً مع الترميز، ولست متأكداً من صحته للتدفقات الكبيرة. كما سمعت عن `.bufferedReader()` و `.readText()`، لكنني لا أفهم كيفية تطبيقهما بشكل صحيح. أحتاج حلاً: 1. يعمل مع أي InputStream (ملف، socket، ByteArrayInputStream). 2. يراعي الترميز (UTF-8 افتراضياً). 3. لا يتطلب إدارة يدوية للمخازن المؤقتة أو الحلقات. 4. ويفضل أن يكون بأقل قدر من الكود.