zapis do pliku krotszego stringa

0

hej, pisze to to w j2me. mam nastepujacy problem: jest plik, raz na jakis czas cos tam do niego zapisuje. i teraz-musi byc tak, ze zawsze linijka ktora wpisuje nadpisuje ta, ktora juz jest. czyli nie robie wpisow jeden pod drugim, ale tak jakby "update" na ciagle ten samej linijce. problem sie pojawia gdy moj string ktory jest juz wpisany, jest dluzszy niz ten ktory chce wpisac, np:

wpisane jest:
1;2;3;555;6;7

a chce wpisac:
0;0;1;4

po wpisaniu dostane:
0;0;1;455;6;7

fragment kodu ktorego uzywam do zapisu:


DataOutputStream _dos;
try{

_dos = returnFIle().openDataOutputStream();
//gdzie w stringBuffer sa wlasnie te dane ktore chce zapisac
_dos.write(_stringBuffer.toString().getBytes());
			_dos.flush();
			_dos.close();
}catch(Exception e){}

moglby mi ktos poradzic jak to poprawic by efekt byl taki, ze po zapisie mam:
0;0;1;4
a nie:
0;0;1;455;6;7

czyli nie ma tego "ogona" z poprzedniego wpisu?

pzdr,
misty

0

w sumie rozwiazaniem (chyba dosc dobrym) jest to, by przed ponownym zapisem usunac plik i stworzyc na nowo. wtedy nie wystapi opisany przeze mnie problem. zastanawiam sie jednak czy da sie to jakos inaczej rozwiazac?

pzdr,
misty

0

OutputStream os = fconn.openOutputStream(fconn.fileSize());
Jeśli chcesz usunąć zawartość pliku, po prostu każ go stworzyć na nowo...

0

OutputStream os = fconn.openOutputStream(fconn.fileSize()); - to nie zrobi mi przypadkiem tego ze moj zapis zacznie sie po fconn.fileSize()? czyli jesli np mam juz wpisanego stringa o dlugosci N to moj nowy zapis zacznie sie za nim?

Jeśli chcesz usunąć zawartość pliku, po prostu każ go stworzyć na nowo... - no pisalam o tym, ze rozwiazaniem jest by usunac plik i stworzyc na nowo, ale jak mowilam-jest druga aplikacja (okienkowa, ktora czyta dane z plikow) ktora korzysta z tego pliku. co jak otworze te aplikacje akurat w momencie kiedy ten plik bedzie usuwany i tworzony na nowo?
nie jest to raczej rozwiazanie na ktore moge sobie pozwolic. tymbardziej ze zapis do tego pliku bedzie sie odbywal kilkanascie-kilkadziesiat razy na dobe. wiec szanse ze trafie akurat na moment usuwania i tworzenia tego pliku przy otwieraniu tej okienkowej aplikacji wcale nie sa takie male..

0

OutputStream os = fconn.openOutputStream(fconn.fileSize()); - sprawdzilam i jest tak jak mowilam. tzn. ze kazdy kolejny zapis zacznie sie na od pozycji fconn.fileSize(). wiec w niczym mi to nie pomoze.

jakies innne sugestie?

           pzdr,

misty

0

ale jak mowilam-jest druga aplikacja (okienkowa, ktora czyta dane z plikow) ktora korzysta z tego pliku. co jak otworze te aplikacje akurat w momencie kiedy ten plik bedzie usuwany i tworzony na nowo?
Bo to normalne, że na telefonach odpalamy po 5 aplikacji w Javie jednocześnie korzystających z tego samego pliku...?

0

nie mowie czy to jest typowe czy nie. tak byc musi. jest jedna aplikacja ktora sobie zyje caly czas, w tle i co jakis czas wrzuca mi do pliku dane. jest druga aplikacja-okienkowa ktora te dan pokazuje jak sobie uzytkownik zechce..
masz lepszy pomysl jak tak rozwiazac? wysylanie danych do bazy na serwerze przez jedna aplikacje oraz pobieranie danych z serwera przez druga-odpada. odgorne (nie moje) zalozenia

0

w sumie chyba bede dodawac spacje w przypadku krotszego nowego zapisu.. nic lepszego sie chyba nie wymysli..

0

a jednak. znalazlam taka metode "truncate(long _offset)" w FileConnection api. robi dokladnie to co chcialam.

pzdr

1 użytkowników online, w tym zalogowanych: 0, gości: 1