Bunu yapmanın tek yolu, şu anda yolda olan baytları hareket ettirmektir. Bunu ne sıklıkta yapmanız gerektiğine ve dosyanın ne kadar büyük olduğuna bağlı olarak, yeni bir dosya oluşturmak, varolan dosyayı kopyalamak ve yeni baytları yol boyunca eklemek genellikle daha iyi bir fikirdir.
kullanabileceğiniz size seyrek dosyayı güncellemeniz gerekir, yoksa (belki 100 kb kadar) küçük ise RandomAccessFile a:
- bayt sayısını ekleyerek
setLength()
yöntemi kullanılarak, dosyayı uzatın sen 'length()
yöntemiyle döndürülen her şeye eklenecektir.
- Yeterli belleğiniz varsa, tüm baytları ekleme noktasından dosyanın önceki sonuna kadar tutacak bir
byte[]
oluşturun.
- Çağrı
seek()
o adresinden tampon yazmak için
- Çağrı
write()
eklemek için ekleme noktası + bayt numaradan konumlandırmak için geçici diziyi
- Çağrı
seek()
doldurmak için ekleme noktasına
- Çağrı
readFully()
de konumlandırmak için nokta
- Çağrı
seek()
yeni bayt sayısı
yazmak için ekleme noktasına
Çağrı `yazılır() konumlandırmak için 2 numaralı adımda yeterince büyük bir dizi oluşturamazsanız, daha küçük bir arabelleğe sahip bir döngüde 3-6 numaralı adımları gerçekleştirmeniz gerekir. Verimlilik için en az 64k'lık bir tampon kullanırdım.
http://stackoverflow.com/questions/181408/best-way-to-write-bytes-in-the-middle-of-a-file-in-java – gtgaxiola
Zaten denedim, maalesef uygulamam baytlar, ancak varolan baytları siler, gerçekte ekleme için ne işe yarar? –
@gtgaxiola: Bu, mevcut baytların üzerine yazacağı için işe yaramaz çünkü –