سؤال

أنا ترقية بعض من التعليمات البرمجية جافا تحتاج إلى أن تكون قادرة على الوجه (javax.nio.Buffer.flip()).

أنا باستخدام byte[] لتخزين البيانات و أريد أن الوجه هذه صفيف بايت, مثل الكثير من المخزن المؤقت يفعل ذلك ، وأعتقد تحت الطبقة العازلة يستخدم بايت[] أيضا.

شكرا

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

المحلول

ByteBuffer قد تستخدم byte[] (خلق من القول ، ByteBuffer.wrap) أو غير جافا كومة الذاكرة (التي تم إنشاؤها مع ByteBuffer.allocateDirect).يمكنك الحصول على وراء byte[] مع ByteBuffer.array.ولكن الدعوة flip و أساليب مماثلة على مخازن لا chnage البيانات الفعلية.بدلا البولوج المرتبطة يتم تغيير البيانات.حيث تعادل مع byte سيكون تغيير إزاحة أن قانون بربط معها.

نصائح أخرى

لا يوجد المباشر ما يعادل java.nio الحزمة .صافي.غير متزامن IO عادة التعامل مع Stream.BeginRead/EndRead, لكنه ليس نفس النموذج.هل يمكن أن تقول لنا ما كنت تحاول أن تفعل ؟

تحرير:لقد قدمت مستوى منخفض تفاصيل ما كنت تحاول القيام به, ولكن لم يكن هناك أي ما يعادل حقيقية عن nio دروس في .صافي, سوف إما أن يكتب لهم نفسك (ليس مستحيلا, ولكن الألم) أو استخدام مختلفة أعلى مستوى النوع.كنت قد تكون قادرة على استخدام MemoryStream على سبيل المثال - الكتابة في ذلك ، ثم طلب العودة إلى البداية.هذا بت مثل التقليب بايت العازلة.ومع ذلك لا يمكننا معرفة ما إذا كان أو لا هذا هو المناسب دون مزيد من المعلومات على أعلى مستوى الهدف.قد يكون هناك طريقة أفضل بكثير من القيام بذلك.

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