لماذا تستخدم RandomAccessFile int كما تعويض
-
18-09-2019 - |
سؤال
أنا أكتب بعض تطبيق اختبار الوصول إلى البيانات وأحتاج إلى الوصول العشوائي إلى محتوى الملفات. إليك الرمز:
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 أصوات).
لا تنتمي إلى StackOverflow