dostep do pliku

0

hej, musze zrobic nastepujaca rzecz:

jest sobie plik 'plik.csv'. do niego jest zapis i z niego jest rowniez odczyt. mozna to przedstawic tak, ze jest sobie jakas aplikacja A (o ktorej nic nie wiem) i ona robi zapis do tego pliku. Kolejna linia wpisu = kolejny rekord do bazy. Teraz jest moja aplikacja, B, ktora ma wlasnie zapisac te przeczytane linie. Aplikacja B ma wpierw wczytac sobie do pamieci 50 linijek i dopiero po tym zapisac. Kolega podsunal mi pomysl, aby moja aplikacja robila tak: czytam linie, patrze czy jest nastepna-jesli tak-czytam ja, jesli nie-czekam az przyjdzie. i tak az uzbieram 50 linii. Podczas czekania mam nie zamykac pliku. nie kojarze aby mozna bylo trzymac otwarty plik (moja aplikacja B) oraz rownoczesnie robic do niego zapis (aplikacja A), ale moze jestem w bledzie.

moje pytanie do Was - czy jest jakas flaga ktora umozliwilaby mi cos takiego? ewentualnie - czy ktos z Was ma lepszy pomysl rozwiazania tego problemu? bo wiadomo-moge probowac za kazdy razem przeczytac do 50 - jesli ich akurat tyle bedzie to ok. ale co jesli bedzie np dopiero 10? i wlasnie szukam jakiegos sprytnego sposobu na rozwiazanie tego.

pozdrawiam,
misty

0

Jak dla mnie albo plik jest otwarty albo zamkniety. Jak jest zamknięty to nie można pobrać z niego bo by trzeba go otworzyć. Można jedynie badać z zewnatrz czy np jego rozmiar się zmienił.

A jak ten program A zapisuje te dane do pliku to nie ma tam po prostu że każdy wpis zaczyna się od numeru porządkowegoi?

0

hej, nie skumales w ogole mojego pytania. problem mam taki - czy 2 niezalezne programy napisane w javie moga w tym samym czasie modyfikowac ten sam plik? czy 2 niezalezne programy napisane w javie moga miec w tym samym czasie otwarty ten sam plik? jeden z programow bedzie do niego pisal, drugi czytal.

0

No to przeczytaj jeszcze raz mojego posta...a jednoznacznie jest w nim odpowiedz WŁAŚŃE na twoje pytanie.

ALBO jest kloczowe

0

no wlasnie ja tez zawsze myslalam ze plik jest albo otwarty albo zamkniety. i w sumie myslalam ze 2 watki nie moga jednoczesnie czytac/pisac do tego samego pliku. ale teraz dokopalam sie do takiej klasy: RandomAccessFile
napisalam 2 watki-jeden co 5sek zapisuje do pliku, drugi co 6sek czyta z tego samego pliku. zaden z watkow nie zamyka pliku. i w sumie nie wywala sie. wyglada na to ze ta klasa sluzy wlasnie do jednoczesnego wspoldzielenia pliku miedzy watkami.
czy ktos z Was ma moze doswiadczenia z ta klasa?

0

No faktycznie ta klasa to umożliwia ... dobrze wiedzieć:-)

a chodzi z normalnym "strumieniowaniem" pliku?

0

nie mam pojecia. sama ja dopiero odkrylam :)

pzdr i milego dnia :)

0

Oczywiscie ze dwa programy / watki moga uzywac tego samego pliku. Jest dodatkowo mechanizm lockowania plikow, ale jest zalezny od systemu i nie wszystkie programy musze tego uzywac. Zatem domyslny tryb jest taki ze mozna.
Problemem moze byc to ze program A moze nadpisac plik tak ze program B bedzie mial zle dane itp. Jednakzde w twoim przypadku mysle ze plik bedzie tylko rosl, wiec masz cos takiego:
program A otwiera plik,program B otwiera plik
program A czyta linijki, i jesli nic nie ma do wczytania do blokuje, po wczytaniu robi co trzeba, np czeka na 50 linijek
program B pisze do pliku
oba programy uzywaja strumieni i maja ciagle otwrarte te pliki
I bedzie dzialac.

0

aha, a ja myslalam ze 2 programy (lub 2 watki) nie moga miec jednoczescie otwartego tego samego pliku. dzieki za odpowiedz :)

  pzdr

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