سؤال

من فضلك أرني أفضل/أساليب سريعة لـ:

1) تحميل الملفات الثنائية الصغيرة جدا في الذاكرة. على سبيل المثال الرموز ؛

2) تحميل/قراءة الملفات الثنائية الكبيرة جدا بحجم 512 ميجابايت+. ربما يجب أن أستخدم IO المسموح بالذاكرة؟

3) اختيارك المشترك عندما لا تريد التفكير في الحجم/السرعة ولكن يجب أن تفعل الشيء فقط: اقرأ جميع البايتات في الذاكرة؟

شكرًا لك!!!

PS آسف ربما على سؤال تافهة. من فضلك لا تغلقها ؛)

PS2. مرآة سؤال التناظرية لـ C#؛

هل كانت مفيدة؟

المحلول

بالنسبة للملفات المعينة للذاكرة ، لدى Java حزمة NIO: الملفات المعينة الذاكرة

تحقق من فئة دفق البايت للملفات الصغيرة:تيار بايت

تحقق من I/O المخزنة للحصول على ملفات أكبر: دفق مخزنة

نصائح أخرى

أبسط طريقة لقراءة ملف صغير في الذاكرة هي:

// Make a file object from the path name
File file=new File("mypath");
// Find the size
int size=file.length();
// Create a buffer big enough to hold the file
byte[] contents=new byte[size];
// Create an input stream from the file object
FileInputStream in=new FileInutStream(file);
// Read it all
in.read(contents);
// Close the file
in.close();

في الحياة الحقيقية ، ستحتاج إلى بعض الكتل/التمسك في حالة أخطاء I/O.

إذا كنت تقرأ ملفًا كبيرًا ، فأنا أقترح بشدة عدم قراءة كل شيء في الذاكرة في وقت واحد إذا كان يمكن تجنبه. اقرأها ومعالجتها في قطع. إنه تطبيق نادر جدًا يحتاج حقًا إلى الاحتفاظ بملف 500 ميغابايت في الذاكرة مرة واحدة.

لا يوجد شيء مثل I/O في Java. إذا كان هذا هو ما عليك القيام به ، فسيتعين عليك فقط إنشاء مجموعة كبيرة جدًا من البايت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top