JAVA: Zistiť dátum vzniku súboru

Programovacie jazyky, rady, poradňa...
petanorech
Light Star
Light Star
Príspevky: 205
Registrovaný: 08 jan 2006, 20:47

JAVA: Zistiť dátum vzniku súboru

Príspevok od používateľa petanorech »

Čaute,
pre svoje súbory potrebujem triedu File z java.io.File. No v tejto triede neexistuje (teda aspoň som nenašiel) žiadna metóda, ktorá by vracala dátum vzniku, príp. vek súboru napr.long.
Je aj iná trieda File (edu.harvard.hul.ois.mets.File), ktorá má getCREATED(), no tá zas nemá všetky metódy, ktoré potrebujem.

Nepozná, prosím, niekto iný spôsob ako zistiť dátum vzniku, príp. vek súboru?

Alebo dajú sa nejak tieto triedy kombinovať, že by súbory boli typu java.io.File a druhé edu.harvard.hul.ois.mets.File?

Dikes vopred.
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

NO tak to si teraz zabrdol do väčšej šmlamastiky :) S použitím štandartného api to nejde priamo (jedine cez java native interface - napíšeš si zdroják v c, c++ ktorý ti zistí ten dátum a predá jave, no však strácaš platformovú nezávyslosť a samozrejme tie zdrojáky treba extra prekladať)

No to ta knižnica mets - no tak som si ju trošku skukol ale som to nespušťal ..... to nie je knižnica na priamu prácu so súbormi, stále využíva OutputWriter a pod, z java.IO.* to znamená ti isté obmedzenia, oni to však asi obišli tak že do komentára v xml ten dátum proste zadali ako reťazec, pri načítaní to proste rozpársujú :) takže cez toto by som to nerieši.


Takže to zhrniem nie je možné priamo zistiť dátum vzniku súboru (maximálne je možný dátum poslednej modifikácie). Dôvod je taký že tieto dátumy si rozne súborové systémy a platformy ukladajú inak a java sa vždy snaží byť nad týmto ;)
Inak neviem na co by ti bola File trieda z tej knižnice, ta nepracuje vobec zo subormy, je to len akasi abstrakcia od ktorej sa dalej dedíi ...


Keby si to tak nutne potreboval tak pouzi java native interface , s tym som nerobil ....
ale tutorialy ako vzdy na google

Kód: Vybrať všetko

java native interface tutorial
Tak som trošku pohľadal a da sa to samozrejme aj bez JNI, sice takyto sposob moc neuznavam, ale účel svetí prostriedky (kod samozrejme nie je moj)

Kód: Vybrať všetko

//referencia na súbor
File file = new File("C:\\yourFile.txt");
try
{
/*spustenie konzoly a vykonnie príkazu dir

DIR [jednotka:][cesta][soubor] [/A[[:]atributy]] [/B] [/C] [/D] [/L] [
  [/O[[:]řazení]] [/P] [/Q] [/S] [/T[[:]čas]] [/W] [/X] [/4]

  [jednotka:][cesta][soubor]
              Určuje jednotku, adresář a soubory, které budou vypsány.


*/
Process ls_proc = Runtime.getRuntime().exec("cmd.exe /D dir " + file.getAbsolutePath() + " /tD");
/*
Odtadeto treba prerobiť treba vypisať a skuknuť čo to vypíše
*/

DataInputStream in = new DataInputStream(ls_proc.getInputStream());
for (int i = 0; i < 5; i++ )
{
in.readLine();
}
String stuff = in.readLine();
StringTokenizer st = new StringTokenizer(stuff);
String dateC = st.nextToken();
String timeC = st.nextToken();//TIME CREATED
in.close();
}
catch (IOException e1)
{
System.out.println("Error in getting create time");
}
Napísať odpoveď