Avatar ·

كيفية قراءة InputStream وتحويله إلى سلسلة نصية في Java؟

مرحبًا بالجميع! أنا مبتدئ في Java وواجهت مهمة: لدي كائن `InputStream` أحصل عليه، على سبيل المثال، عند قراءة ملف أو من طلب شبكة. أحتاج إلى تحويل محتوى هذا التدفق إلى سلسلة نصية `String` عادية، لأتمكن من معالجة النص لاحقًا. المشكلة أنني لا أعرف كيفية القيام بذلك بشكل صحيح. حاولت قراءة البايتات يدويًا، لكن الكود أصبح ضخمًا وربما غير صحيح. إليك ما جربته: ```java InputStream inputStream = new FileInputStream("file.txt"); StringBuilder sb = new StringBuilder(); int data = inputStream.read(); while (data != -1) { sb.append((char) data); data = inputStream.read(); } inputStream.close(); String result = sb.toString(); ``` هذا الكود يعمل، لكنني متأكد من وجود حلول أكثر أناقة. أولاً، لا يأخذ في الاعتبار ترميز الأحرف. ثانيًا، سيكون بطيئًا في الملفات الكبيرة لأنه يقرأ بايتًا واحدًا في كل مرة. ثالثًا، سمعت أنه في Java 9 وما فوق ظهرت طرق جديدة، لكنني لا أعرف.