تحويل إدخال/إخراج الملفات بترميز افتراضي إلى StandardCharsets صريح
استخدم قارئات وكاتبات Files مع ثوابت StandardCharsets بدلاً من الاعتماد على سلوك الترميز الافتراضي للمنصة والبحث عن اسم الترميز.
مقارنة الكود
✕ Platform-default charset
try (Reader reader = new FileReader(path.toFile())) {
return readAll(reader);
}
✓ Explicit standard charset
try (BufferedReader reader = Files.newBufferedReader(
path, StandardCharsets.UTF_8)) {
return readAll(reader);
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
نتائج قابلة للنقل
تُفكّ نفس البايتات بنفس الطريقة على أي جهاز.
ثابت معرّف مسبقًا
لا يمكن أن يحتوي StandardCharsets.UTF_8 على اسم ترميز مكتوب خطأ.
واجهة ملفات حديثة
يُعبَّر عن Path والتخزين المؤقت والترميز في عملية واحدة.
الأسلوب القديم
الترميز الافتراضي للمنصة
الأسلوب الحديث
ترميز قياسي صريح
منذ JDK
7
الصعوبة
مبتدئ
دعم JDK
تحويل إدخال/إخراج الملفات بترميز افتراضي إلى StandardCharsets صريح
متاح
متاح على نطاق واسع منذ JDK 7 (يوليو 2011)
كيف يعمل
تجعل بواني Reader وWriter التي تعتمد على الترميز الافتراضي سلوك الملف يعتمد على بيئة التشغيل. تقبل Files.newBufferedReader() وnewBufferedWriter() ترميزاً صريحاً، بينما توفر StandardCharsets ثوابت مضمونة مثل UTF_8 دون البحث عن سلسلة نصية أو استثناء UnsupportedCharsetException.
توثيق ذو صلة
إثبات