PDA

View Full Version : Java, mi servono 2 risposte


Mazza2
21-11-2002, 23:01
1- Mi serve una classe del tipo "cerca file" che mi cerchi in tutto un disco fisso un file.

2- Con che comando posso far riavviare il sistema (supponendo che sia windows)?



grazie

Tassadar
22-11-2002, 08:16
Per la prima: te la devi fare :)
Per la seconda: dubito che tu riuscirai a farlo

cn73
22-11-2002, 08:32
Non è detto che tu debba fartela :D Caso vuole che ho giusto realizzato un'applicazioncina didattica atta allo scopo (Fra l'altro si chiama prorio CercaFiles :D ).
E' un po' più complessa, ma facilmente adattabile al tuo scopo, o almeno tu puoi prendere sicuramente spunto...

La seconda: mmm... non so se sia fattibile...perchè dovresti poi??

kingv
22-11-2002, 08:49
per la seconda puoi fare una chiamata esterna a un programmino che si chiama shutdown.exe (cerca su internet).

altrimenti se nelle api di windows (sono ignorantissimo in materia) esiste la maniera di farlo puoi scriverti un wrapper jni per chiamarle

Tassadar
22-11-2002, 11:45
adesso che mi vien in mente mi sembra che tu possa chiamare rundll32.exe con dei paramtri per restartare il systema, cerca su google :)

PGI
23-11-2002, 03:18
Per arrestare WindowXP e 2000 (scrivo un metodo intero ma la parte "interessante" è solo il contenuto della stringa powerOffCommand)

import java.io.*

...

public void powerOff() {
String powerOffCommand="tsshutdn 01 /powerdown /delay:01";
Runtime runtime=Runtime.getRuntime();
Process powerOffProcess;
try {
powerOffProcess=runtime.exec(powerOffCommand);
} catch (IOException ioEx) {
System.out.println("Exception caught:"\n+IOException);
}
}

Per riavviare Windows XP sostituisci la stringa powerOffCommand con

"shutdown -r -t 01"

tsshutdn.exe è un programma standard contenuto sia in Windows 2000 che in Windows XP
shutdown.exe dovrebbe essere solo per XP.

Ho provato entrambe le soluzioni è funzionano (S.O. WindowsXP Home Edition).

Ciao.

Mazza2
23-11-2002, 15:21
Originariamente inviato da PGI
[B]Per arrestare WindowXP e 2000 (scrivo un metodo intero ma la parte "interessante" è solo il contenuto della stringa powerOffCommand)

import java.io.*

...

public void powerOff() {
String powerOffCommand="tsshutdn 01 /powerdown /delay:01";
Runtime runtime=Runtime.getRuntime();
Process powerOffProcess;
try {
powerOffProcess=runtime.exec(powerOffCommand);
} catch (IOException ioEx) {
System.out.println("Exception caught:"\n+IOException);
}
}

Per riavviare Windows XP sostituisci la stringa powerOffCommand con

"shutdown -r -t 01"

tsshutdn.exe è un programma standard contenuto sia in Windows 2000 che in Windows XP
shutdown.exe dovrebbe essere solo per XP.

Ho provato entrambe le soluzioni è funzionano (S.O. WindowsXP Home Edition).

Ciao.


ti ringrazio, verifico subito

Mazza2
23-11-2002, 15:54
una domanda: ma runTime.exec("parametro") e' la stessa cosa che fare un file .bat con rundll32 parametri....

giusto?

cosa posso fare eseguire con runTime.exec??

PGI
23-11-2002, 16:04
in pratica puoi lanciare tutti i programmi che puoi avviare da una riga di comando dos.

Intercettando i flussi di input e output dell'oggetto process creato dal metodo runtime.exec() puoi andare anche più in là ma non so quanto.
Personalmente ho provato solo a ridirigere i messaggi di errore del compilatore javac dalla finestra dos ad una TextArea (ho fatto una specie di notepad con compilatore java);
C'è da chiedersi però se sia possibile, ad esempio, intercettare il flusso di output di Word o che altro.
Non so a che servirebbe però :)

Ciao.

cionci
23-11-2002, 16:49
Originariamente inviato da PGI
[B]Per riavviare Windows XP sostituisci la stringa powerOffCommand con

"shutdown -r -t 01"

tsshutdn.exe è un programma standard contenuto sia in Windows 2000 che in Windows XP
shutdown.exe dovrebbe essere solo per XP.

Ho provato entrambe le soluzioni è funzionano (S.O. WindowsXP Home Edition).
Io non ne ho nemmeno uno di questi programmi su Windows 2000...

PGI
23-11-2002, 18:37
Ho controllato (alla faccia della fiducia mi dirai :D ) ed hai ragione, tssutdn.exe è presente nella versione server di Windows 2000

support.microsoft.com/default.aspx?scid=kb;en-us;243202 (http://support.microsoft.com/default.aspx?scid=kb;en-us;243202)

Lo stesso vale per shutdown.exe

http://support.microsoft.com/default.aspx?scid=kb;en-us;317371

Entrambe le applicazioni sono invece presenti in Windows XP

Ciao.

cn73
23-11-2002, 19:40
Se ti interessa ancora...



void cercaFile(File f){

System.out.println(f.getAbsolutePath());

if (f.isFile()){
numFiles++;
//System.out.println("File!");
if(f.getName().equals("il file da cercare")){
// System.out.println("Trovato!");
dataVector.addElement(f);
}
}
else if (f.isDirectory()){
//System.out.println("Dir!");
numCartelle++;
String[] lista = f.list();
if (lista!=null){
for(int i=0;i<lista.length;i++){

File myfile = new File(f,lista[i]);
cercaFile(myfile);
}
}
else{
//System.out.println("Vuota!");
}

}
else
System.out.println("BHO???");
}



dataVector è destinato a contenere i file trovati, potrebbero essere n... La procedura è ricorsiva, devi passargli una directory da cui cominciare...