Znalazłem kod do edytowania pliku.
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Pliki_RAF {
public static void main(String[] args) {
String tekst="";
long pozycja=0, dlugoscpliku=0;
RandomAccessFile raf = null;
// OTWIERANIE PLIKU I WYBÓR TRYBU ODCZYTU - "r" (zapis - "w", zapis/odczyt "rw")
try {
raf = new RandomAccessFile("plik.txt", "r");
} catch (FileNotFoundException e) {
System.out.println("BŁĄD PRZY OTWIERANIU PLIKU!");
System.exit(1);
}
// SWOBODNY ODCZYT Z PLIKU
try {
dlugoscpliku = raf.length();
System.out.println("Dlugosc pliku: " + dlugoscpliku);
raf.seek(0); // "skok" na początek pliku
while (pozycja < dlugoscpliku){
tekst += raf.readLine();
pozycja= raf.getFilePointer();
}
} catch (IOException e1) {
System.out.println("BŁĄD ODCZYTU Z PLIKU!");
System.exit(2);
}
//ZAMYKANIE PLIKU:
try {
raf.close();
} catch (IOException e) {
System.out.println("BŁĄD PRZY ZAMYKANIU PLIKU!");
System.exit(3);
}
System.out.println("Wczytane wyrazy: " + tekst);
System.out.println("polozenie wskaznika :" + pozycja);
}
}
Mam z nim problem ponieważ jak mam fragment kod
String c="8";
...
raf.seek(0);
raf.writeChars(c);
i plik przykładowo
1 1 1 1
To po puszczeniu tej metody uzyskuje
81 1 1
Czyli tak jakby liczba dodana jest na 2 pozycje pomimo że wskaźnik ustawiony jest na 1 pozycji.
Może ktoś mi wytłumaczyć dlaczego tak się dzieje :P ?