هل من الممكن تعيين بايت speicifc في عودة عشوائية إلى خالية؟

StackOverflow https://stackoverflow.com/questions/4406691

  •  25-09-2019
  •  | 
  •  

سؤال

Origianlly ، عندما قمت بإنشاء عشوائي Accessfile ، تخطيت بعض البايتات ، لذلك بقي أولئك الذين لاغية ، لكنني الآن بحاجة إلى حذف بعض البايتات التي كتبتها. في الوقت الحالي ، ما أفعله هو الكتابة فوق الموقع بمساحة ، ولكن هل هناك طريقة لإعادته إلى فارغة؟

تحرير: نظرًا لأنه يجب أن يحتوي على قيمة ، أود أن أعرف كيفية إعادتها إلى القيمة الأصلية التي يتم تعيينها افتراضيًا عند تخطيها.

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

المحلول

لا يمكن أن يحتوي الملف على بايت "فارغ". يجب أن يكون لكل بايت في الملف قيمة بين 0 و 255.

إذا كنت تريد "محو" جميع البايتات بعد نقطة معينة ، فيمكنك استخدامها RandomAccessFile.setLength الذي يقتطع الملف.


بخصوص تعليقك: إذا كنت ترغب في تعيين بعض البايتات إلى القيمة الأصلية ، أقترح عليك تغليف أ RandomAccessFile في الفصل الخاص بك مع خريطة من الفهرس إلى قيمة البايت الأصلية ، والتي تقوم بتحديثها في كل مكالمة إلى write. يمكن أن توفر هذه الفئة الفرعية طريقة restore(int i) التي تعيد قيمة البايت في الفهرس i من خلال البحث عن القيمة الأصلية في الخريطة.

نصائح أخرى

من غير الواضح للغاية ما تحاول القيام به ، لكن لا يمكنك "حذف" بايت من بداية الملف أو منتصفه. يمكنك عموما اقتطاع ملف ، ولكن لا يمكنك إزالة البتات من الوسط - عادةً ما تقوم بإنشاء ملف جديد ، فقط نسخ البيانات التي تريدها ، ثم قد إعادة تسمية الملفات بشكل مناسب.

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