PDA

View Full Version : [Java]


Fumereo
22-10-2003, 01:05
Salve ho un problema veloce veloce.....

Creo un flusso di dati per il quale mi serve un file di partenza.
Questo file pero' voglio che sia variabile e non capisco come mettere un percorso...
Infatti posso solo mettere nomi di file all'interno della directory in cui e' il .class
Io invece voglio poter prendere un file in chessoio c:\filez\prova.txt (se lo scrivo cosi' li' dove vuole la stringa del file mi sputa)
il percorso lo deve inserire l'utente

Altro problema.....
io devo poter far girare il programma su altri sistemi operativi(linux).....come gestisco i path?(non mi intendo di linux)

Grazie mille a tutti =)


Fumereo

ilsensine
22-10-2003, 07:52
I path sui sistemi unix usano il separatore di directory "/" invece di "\", e non esiste il concetto di partizione c: d: ecc. (le partizioni sono gestite in altro modo). Un tipico percorso di un file è questo, ad esempio:
/usr/lib/libjpeg.so
Non conosco java, ma sicuramente ha degli strumenti per gestire i path in modo indipendente dal s/o.

Molz
22-10-2003, 07:53
Se lo scrivi così funziona

c:\filez\prova.txt

solo ke se è 1 costante da codice e qindi tra virgolette

\ è l'escape character

cioè nn t considera il carattere dopo e serve per fare cose particolari.

Ad esempio x andare a capo scrivi \n

per inserire 1 \ tra virgolette devi scrivere \\

e qindi
"c:\\filez\\prova.txt"


x qanto riguarda linux devi solo mettere la / invece di \ (e in tal caso ne basta 1)

kingv
22-10-2003, 09:14
Originariamente inviato da ilsensine
Non conosco java, ma sicuramente ha degli strumenti per gestire i path in modo indipendente dal s/o.


esatto, la classe java.io.File ha una stringa statica chiamata pathSeparator che contiene il separatore relativo al SO in cui stai eseguendo la VM

kingv
22-10-2003, 09:15
dalla documentazione:

The prefix concept is used to handle root directories on UNIX platforms, and drive specifiers, root directories and UNC pathnames on Microsoft Windows platforms, as follows:

* For UNIX platforms, the prefix of an absolute pathname is always "/". Relative pathnames have no prefix. The abstract pathname denoting the root directory has the prefix "/" and an empty name sequence.
* For Microsoft Windows platforms, the prefix of a pathname that contains a drive specifier consists of the drive letter followed by ":" and possibly followed by "\" if the pathname is absolute. The prefix of a UNC pathname is "\\"; the hostname and the share name are the first two names in the name sequence. A relative pathname that does not specify a drive has no prefix.

cn73
22-10-2003, 11:36
Originariamente inviato da kingv
esatto, la classe java.io.File ha una stringa statica chiamata pathSeparator che contiene il separatore relativo al SO in cui stai eseguendo la VM
Confermo in pieno ;)

Oppure ancora meglio:


String file_separator = System.getProperty("file.separator");
if(file_separator.equals("/"))
OS = "unix";
else
OS = "win";

Fumereo
22-10-2003, 11:59
grazie ...quindi per meglio capire....

io chiedo all'utente di inserire il path del file da scegliere....lui me lo scrive...io lo infilo in una stringa File.
Poi con quel codice li' riconosco se l'utente usa win o unix

(domanda che valore viene dato a file_separator con questo metodo System.getProperty("file.separator")? non mi e' del tutto chiaro)

a quel punto magari nel caso di win per usare il path nel codice uso uno stringTokenizer e dove vedo un \ ce ne metto un altro in modo da ottenere \\ .......e' sensata ocme idea?

Fum

kingv
22-10-2003, 13:00
Originariamente inviato da Fumereo
a quel punto magari nel caso di win per usare il path nel codice uso uno stringTokenizer e dove vedo un \ ce ne metto un altro in modo da ottenere \\ .......e' sensata ocme idea?

Fum


del primo pezzo non ho capito un tubo, ma per il secondo ti dico di no:

se scrivo

String pippo="c:\\winnt\\system32"
devo raddoppiare i '\\' perche' non siano interpretati dal compilatore come caratteri di escape.

ma se hai una string che contiene il carattere '\\' non devi raddoppiare un bel niente ;)

cn73
22-10-2003, 13:13
Vuoi un consiglio'? Usa un FileChoseer che ti rende tutto trasparente... cmq System.getProperty("file.separator")? ti restituisce "\\" per WIn e "/" per Unix