ejemplo - jseparator en java
File.separator o File.pathSeparator (3)
En la clase de File
hay dos cadenas, separator
y pathSeparator
.
¿Cual es la diferencia? ¿Cuándo debo usar uno sobre el otro?
Si te refieres a File.separator
y File.pathSeparator
entonces:
File.pathSeparator
se utiliza para separar rutas de archivos individuales en una lista de rutas de archivos. Considerar en windows, la variable de entorno PATH. Usted utiliza un;
para separar las rutas de archivos por lo que en WindowsFile.pathSeparator
sería;
.File.separator
es/
o/
que se usa para dividir la ruta a un archivo específico. Por ejemplo, en Windows es/
oC:/Documents/Test
Utiliza el separador cuando estás creando una ruta de archivo. Así que en unix el separador es /
. Así que si quisieras construir la ruta /var/temp
Unix lo harías así:
String path = File.separator + "var"+ File.separator + "temp"
Utiliza el pathSeparator
cuando estás tratando con una lista de archivos como en un classpath. Por ejemplo, si su aplicación tomó una lista de /path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
como argumento, la forma estándar de formatear esa lista en unix es: /path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
Así que dada una lista de archivos harías algo como esto:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
java.io.File
clase java.io.File
contiene cuatro variables separadoras estáticas. Para una mejor comprensión, entendamos con la ayuda de algún código.
- separador: el carácter separador de nombre predeterminado de la plataforma como cadena. Para Windows, es ''/' y para UNIX es ''/''.
- separatorChar: igual que separator pero es char
- pathSeparator: variable dependiente de la plataforma para path-separator. Por ejemplo, la lista de variables PATH o CLASSPATH de rutas separadas por '':'' en sistemas Unix y '';'' en el sistema de Windows
- pathSeparatorChar: igual que pathSeparator pero es char
Tenga en cuenta que todas estas son variables finales y dependientes del sistema.
Aquí está el programa java para imprimir estas variables separadoras. 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);
}
}
Salida del programa anterior en el sistema Unix:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
Salida del programa en sistema Windows:
File.separator = /
File.separatorChar = /
File.pathSeparator = ;
File.pathSeparatorChar = ;
Para que nuestra plataforma de programa sea independiente, siempre debemos usar estos separadores para crear una ruta de archivo o leer cualquier variable del sistema como PATH, CLASSPATH.
Aquí está el fragmento de código que muestra cómo usar los separadores correctamente.
//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");