2011-01-24 8 views
6

muszę zrobić wiele rzeczy z zasobów w locie: parsowania docs xsd/xml, budowanie i kompilacja klas Javy, zapakować je do słoików ans wojen, utrzymują się w DB, wdrażać je jako OSGi itpStruktura plików Java w pamięci?

Większość bibliotek/API, z których korzystam, pozwala wykonywać wszystkie te pośrednie zadania w pamięci, ale istnieją pewne "specjalne" biblioteki działające tylko z java.io.File. I nie pozostało mi nic innego, jak używanie prawdziwych plików tymczasowych i katalogów, co nie jest dobre w środowisku Java EE.

Wierzę, że musi istnieć biblioteka/rozwiązanie dla struktury plików w pamięci posiadające węzły rozszerzające java.io.File (jak widzę). Proszę podać link do znanych/podobnych bibliotek. Wszelkie komentarze są mile widziane.

Dzięki!

+0

Uważam, że jest to mniej więcej to samo pytanie, co http://stackoverflow.com/questions/578305/create-a-java-file-object-or-equivalent-using-a-byte-array-in- memory-without-a –

+0

@ Chris Thompson, Przeczytałem to przed opublikowaniem. To naprawdę nie jest to samo imho. – Osw

+0

Wystarczająco, widzę tę stronę rzeczy na pewno. Tak czy inaczej, twoje pytanie jest dobre i byłbym zszokowany, gdyby nie było czegoś, co mogłoby to osiągnąć ... –

Odpowiedz

6

Nie wierzę, że znajdziesz to, czego szukasz. Interfejs API java.io.File nie został napisany z zamiarem dostarczenia abstrakcji systemu plików, którą można zaimplementować na różne sposoby. Chociaż nie udostępnia metody dla niektórych operacji FS (takich jak delete i mkdir), nie obsługuje podstawowych operacji odczytu/zapisu we/wy. To pozostawia do innych klas, takich jak FileInputStream. Oznacza to, że z punktu widzenia interfejsu API obiekt File jest nie więcej niż ścieżką. Nic nie jest wyabstrahowane. Nie masz wyjscia.

+0

Dobry strzał. Czy na pewno plik java.io.file nie wykonuje podstawowych operacji we/wy? Wtedy nie mam szans :( – Osw

+0

Cóż, tutaj jest javadoc: http://download.oracle.com/javase/1.4.2/docs/api/java/io/File.html .Jeśli klasa pliku była abstrakcyjna I/O operacje, które można oczekiwać, aby zobaczyć metody takie jak getInputStream(), getOutputStream(), itp., Które oczywiście nie ma.Od czasu wprowadzenia języka Java inni napisali prawdziwe interfejsy API systemu plików, które mogą być implementowane na wiele sposobów, ale to nie pomaga w używaniu. –

+0

Właśnie przejrzałem źródła File i FileInputStream. Masz rację, utknąłem. – Osw

4

Jedną z opcji jest użycie RAM disk. Twój program pomyśli, że używa dysku z plikiem java.io.File, ale naprawdę będzie używać pamięci głównej.

+0

+1 za wskazanie istniejącego oprzyrządowania. Jednak to wciąż niekoniecznie "pasuje" do środowiska "Java EE" ... cokolwiek to jest :) –

+0

@pst, Dlaczego nie "pasuje" do środowiska "Java EE"? To tylko dodatkowy FS, który zapewnia system hosta. Musi użyć jakiejś ścieżki, aby czytać i pisać swoje pliki; równie dobrze może być na FS w pamięci. – Jay

+0

@Jay, dzięki za pomysł, ale to trochę sprzętu/systemu rzeczy, gdy myślałem o warstwie abstrakcji oprogramowania. – Osw