Dosyanın en başına satır eklemek çoğu dilde yapılabilen bir şey değil (hatta hiçbirinde değil aslında da bazıları özel fonksiyon tanımlamış olabiliyor). Onun yerine şunu yapmak gerekli:
1. yeni bir dosya oluştur 2. yeni dosyaya başa ekleyeceğin satırları ekle 3. başına satır eklenecek dosyayı aç 4. tüm içeriğini yeni dosyaya satır satır ekle 5. eski dosyayı sil 6. yeni dosyayı yeniden isimlendir
İşletim sistemleri dosyaları bu istediğin şekilde shift etmene izin vermiyorlar. Eski dosyanın üzerine yazma (overwriting denen) işlemi yapabiliyorsun ama ekleme yapamazsın malesef.
tipik C alıştırmalarını Java ile yapmaya mı çalışıyorsun? öyle Java çalışma. düz dosya işlemlerinin hiçbir pratik faydası yok Java'da. Xml kullan, JSON kullan, INI benzeri bir yapı olan properties kullan, biraz daha sofistike işler için veritabanı(SQLite, vs) hepsi için standart class'lar metotlar var.
Soruyu soran bisiklete nasıl binerim diyor sen motosiklet kullan, araba kullan, hatta SUV kullan diyorsun.
Harddisk 'in sana sundugu 2 hizmet var, yazma ve okuma. Dosyanin basina yazmak diye bir sey yok. Dosyanin uzerine yeniden yazman gerek, tamamini. Dosyadaki tum satirlari okuyup, yeniden dosyaya yazarken ilk yazmak istedigin sey ile baslayarak yazacaksin. Tum editorler boyle yapiyorlar. Bugun word dosyasinda 40 bin kelimelik bir dosyayi acip en basa bir sey yazdiginda tum karakterlerin yeri degisiyor. Bu da onun gibi. --- Nasil yapacagiz peki ? Core Java ile dosyadan okuma yapabildigini varsayiyorum. Okudugum ve String olarak elinde tuttugun variable icerisinde, satir sonlarina gore split yaparak satirlara ayirabilirsin. Ancak, Windows ve Unix sistemleri satir sonlarini ifade etmek icin farkli semboller kullanir. Java'nin kendisi de platform independant mantikta oldugu icin System.lineSeperator() ( JDK 1.7 + ) ya da System.getProperty(line.seperator) ( JDK 1.7 - ) ya da biraz hack yontemi ama String.format("%n"); karakterlerini kullanarak split edebilirsin.
final String newLine = System.lineSeperator(); String dosyaIcerigi = ..... // okudun aldin dosyadaki her seyi String[] lines = dosyaIcerigi.split(newLine); // dosyadaki text i satirlara ayirdin, arraydeki her eleman 1 satira denk geliyor sirasi ile String basaEklenecekText = "basaEklenecekText" + newLine; // eklemek istedigin sey her neyse sonunda platform independant satir ayirmacasi
Sonrasinda basaEklenecekText ile baslayarak dosyaya bizim array i yazacaksin. Array olusturdum ki oradan belirli bir satir numarasi ile alip basa yazmak istersin diye. Yoksa son satirdaki kod ile de yaparsin. Bu core Java ile. Apache'nin IOUtils ve FileUtils isimli cok guzel 2 tane util class i var. Bunlari commons-io da bulabilirsin. Orada File.readByLines() seklinde bir metod var, kendi icerisinde platform bagimsiz hesaplamalari hallediyor. Direkt File.readFileToString() gibi bir metodu var. Bunlari kullanarak 3 satirda halledebilirsin tekerlegi yeniden icat etmeden.
Ama ogrenmek icin once kendin yazarsan daha mantikli bana sorarsan.
İlk:satir:burasi;
İkinci:satir:burasi;
ben Ucuncu:satir:burasi; satırını dosyanın başına nasıl eklerim yani bu satır yazıldıktan sonra dosya şu şekilde olacak
Ucuncu:satir:burasi;
İlk:satir:burasi;
İkinci:satir:burasi;