سؤال

أنا أكتب بعض تطبيق اختبار الوصول إلى البيانات وأحتاج إلى الوصول العشوائي إلى محتوى الملفات. إليك الرمز:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);

حيث الإزاحة لديها نوع طويلة. لماذا لا توفر RandomAccessFile طريقة:

public void write(byte b[], long off, int len)

?

كيفية تجاوز هذه المشكلة؟

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

المحلول

أعتقد أنك تبحث عن seek طريقة.

الإزاحة في write هو إزاحة في الصفيف. صفائف int إزاحة. كانت هناك مقترحات ل "صفائف طويلة"، ولكن تم تنفيذها، فستظل بحاجة إلى الحمل الزائد.

الملفات المعينة في NIO لديك مشكلة في هذا المكافئ MappedByteBuffer.position لسبب ما يستخدم فقط int. وبعد يرى CR 6347833. (9 أصوات).

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