Nella File
classe ci sono due stringhe separator
e pathSeparator
.
Qual è la differenza? Quando dovrei usarne uno sopra l'altro?
Nella File
classe ci sono due stringhe separator
e pathSeparator
.
Qual è la differenza? Quando dovrei usarne uno sopra l'altro?
Risposte:
Se vuoi dire File.separator
e File.pathSeparator
poi:
File.pathSeparator
viene utilizzato per separare i singoli percorsi di file in un elenco di percorsi di file. Considerare su Windows, la variabile d'ambiente PATH. Si utilizza un ;
per separare i percorsi dei file così su Windows File.pathSeparator
sarebbe ;
.
File.separator
è /
o \
utilizzato per suddividere il percorso in un file specifico. Ad esempio su Windows è \
oC:\Documents\Test
File.separator
dovrebbe essere File.fileSeparator
riguardo aFile.pathSeparator
File
. Penso che la parte del file sia implicita. Ma chissà perché hanno fatto molto di quello che hanno fatto con Java.
Si utilizza il separatore quando si crea un percorso di file. Quindi in unix il separatore è /
. Quindi, se volessi costruire il percorso unix, /var/temp
lo faresti in questo modo:
String path = File.separator + "var"+ File.separator + "temp"
Si utilizza pathSeparator
quando si ha a che fare con un elenco di file come in un percorso di classe. Ad esempio, se la tua app ha preso un elenco di barattoli come argomento, il modo standard per formattare tale elenco su unix è:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Quindi dato un elenco di file faresti qualcosa del genere:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
allora è inutile da usare File.separator
poiché hai già un codice dipendente dalla piattaforma. Potrebbe anche hardcode il percorso.
java.io.File
La classe contiene quattro variabili di separazione statica. Per una migliore comprensione, capiamo con l'aiuto di un po 'di codice
Si noti che tutte queste sono variabili finali e dipendenti dal sistema.
Ecco il programma java per stampare queste variabili di separazione. FileSeparator.java
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
Output del programma precedente sul sistema Unix:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Output del programma su sistema Windows:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Per rendere indipendente la nostra piattaforma di programma, dovremmo sempre usare questi separatori per creare il percorso del file o leggere qualsiasi variabile di sistema come PATH, CLASSPATH.
Ecco lo snippet di codice che mostra come utilizzare correttamente i separatori.
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
String
echar
restituito dai metodi sopra menzionati restituisce la barra rovesciata correttamente formattata (se su Windows).