Android jeszcze raz :-)

Wiadomo, że telefony i tablety mają system plików w NAND flashu, a ja muszę pisać sobie do tymczasowego pliku miliony razy. Nie mam zielonego pojęcia co taki Android robi gdy widzi takie zapisy i jak planuje to keszować. Jest to też wolne. Plik mi nie jest do szczęścia potrzebny po wielomilionowym używaniu go. Może siedzieć w ramie więc wymyśliłem sobie, że zadeklaruję sobie

plik w pamieci :

MemoryFile mf = new MemoryFile("buf0", 2048);

I zadeklaryję filedescriptor, gdyż lest on niezbędny innej funkcji systemowej

FileDescriptor fd = new FileDescriptor();

Jak przybindować buf0 do fd żeby fd wskazywał na ta ten wirtualny plik?

Reply to
rennes
Loading thread data ...

W dniu 21.04.2011 22:18, Lelek@ pisze:

Jak rozumiem z jakiś przyczyn nie możesz pobrać deskryptora do MemoryFile przez metodę getFileDescriptor?

Reply to
Michoo

Nie umiem tego zapisać :-) Nie rozumiem tego :-)

Inna funkcja z API 4 chce filedeskryptora do pliku lub ścieżki na "/sdcard/lol.bib" Ponieważ jest to plik MemoryFile nie mam zielonego pojęcia jak sie do niego dobrać :-)

Reply to
rennes

W dniu 21.04.2011 22:34, Lelek@ pisze:

MemoryFile mf = new MemoryFile("buf0", 2048); FileDescriptor fd = mf.getFileDescriptor(); Nie działa?

Reply to
Michoo

Jeszcze raz:

Jest sobie fakaś funkcja API nazwijmy ją setFoo("/scdard/lol.bin") I pięknie zapisuje do external memory. Ale robi to bardzo wolno i boję się że po milionach zapisów załatwię telefon.

Chcę te kilka plików zadeklarować w RAM-ie jako MemoryFile.

A temu tak chcę zrobić, bo inne funkcje chcą tworzyć pliki i nie potrafia pisać do buforów, tablic. Muszę te pliki buforowe zapisywać i czytać kilka razy na sekundę.

Reply to
rennes

Nie działa - podkreśla mi na czerwono to getFileDescriptor(); // The method FileDescriptor() is undefined for the type MemoryFile

Reply to
rennes

Podpowiada że mam rzutować (add cast to mf0) i robi to:

((FileDescriptor) mf0).FileDescriptor();

I dalej podkreśla już całość :-)

Reply to
rennes

Te cztery linijki:

MemoryFile mf0 = new MemoryFile("buf0", 2048);

MemoryFile mf1 = new MemoryFile("buf1", 2048);

FileDescriptor fd0 = mf0.getFileDescriptor();

FileDescriptor fd1 = mf1.getFileDescriptor();

podkreślone na czerwono oba getFileDescriptor()

Reply to
rennes

W dniu 21.04.2011 22:41, Lelek@ pisze:

Ki czort? Czemu nagle się zrobiło FileDescriptor()? Niestety na androidzie się specjalnie nie znam - chyba więcej pomóc nie mogę.

Reply to
Michoo

getFileDescriptor tam wyżej próbowałem czy może bez get :-)

Reply to
rennes

formatting link
Nie ma tej funkcji w ogóle dla plików w Memory

Muszę mieć deskryptor do mf0 i mf1 bo nie mam co funkcji API wsadzić w mordę :-) A nie moge pisać do sdcard bo ją zabiję i za wolno.

SDCARD to jedno z niewielu miejsc gdzie mam uprawnienia. Te głupawe funkcje chcą działać na plikach, strumieniach i protokołach bez wnikania w szczegóły. Czujesz problem? Muszę mieć dwa bufory i posać do nich na zmianę żeby nie tracic danych, bo do bajtów tam nie ma dostepu.

Reply to
rennes

Prawdopodobmie MemoryFile to coś innego niż File

I do MemoryFile powinien być MemoryFileDescriptor, którego nie ma. A my chcemy użyć FileDescriptor do Memory. Teraz trzeba jakoś naokoło przejść z MemoryFile do FileDescriptor ale funkcji bezpośrednio konwertujących nie ma.

Reply to
rennes

W dniu 21.04.2011 23:04, Lelek@ pisze:

Wygląda na to, że masz bardzo starego androida:

formatting link

Reply to
Michoo

Ale nie moge pisać softu na system, którego nawet jeszcze nie ma w telefonach. 2.3 jest sporadycznie, a sprzedanych tabletów ze starszymi miliony

Reply to
rennes

Ja to widziałem ale nie wiem co zrobić żeby to obejść. Musi to działać od Androida 1.6

Reply to
rennes

Zanim napiszesz, to proporcje moga sie zmienic :-)

Tylko wy nadal nie czytacie dokumentacji

"getFileDescriptor ... Gets a FileDescriptor for the memory file. Note that this file descriptor is only safe to pass to #MemoryFile(FileDescriptor,int)). It should not be used with file descriptor operations that expect a file descriptor for a normal file. ..."

J.

Reply to
J.F.

Ja sie na Androidzie kompletnie nie znam, ale tu sie pojawia juz w

2008r. Chyba ze to propozycja na przyszlosc.
formatting link

Ja sie dalej nie znam - ale jesli to taki obiektowy system, to moze mozesz napisac wlasna klase z potrzebnymi metodami ?

J.

Reply to
J.F.

W dniu 2011-04-21 22:39, Lelek@ pisze:

Obawiam sie ze jesli piszesz do NAND'a to zalatwisz ja po kilku tysiacach zapisow. A android to przeciez LINUX

Reply to
Zakarm

Użytkownik "Lelek@" snipped-for-privacy@iw.iw napisał w wiadomości news:ioq3ff$4sv$ snipped-for-privacy@opal.futuro.pl...

Czyli to ma byc taki tymczasowy plik do uzycia przez niektore funkcje/programy ? I one tam sobie cos zapisza, wkrotce potem odczytaja, a potem znow zapisza i na koncu to nikomu nie bedzie potrzebne ?

Ja sie tam na Androidzie nie znam - ale czy nie da rady skonfigurowac jakiegos malego ramdysku ?

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.