Č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.
JAVA: Zistiť dátum vzniku súboru
-
petanorech
Light Star
- Príspevky: 205
- Registrovaný: 08 jan 2006, 20:47
-
pheo
Light Star
- Príspevky: 212
- Registrovaný: 20 sep 2005, 16:53
- Bydlisko: moje hniezdo
- Kontaktovať používateľa:
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
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)
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 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 tutorialKó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");
}