File.separator o File.pathSeparator

En la clase File hay dos cadenas, separator y pathSeparator .

¿Cual es la diferencia? ¿Cuándo debería usar uno sobre el otro?

Si se File.separator y File.pathSeparator entonces:

  • File.pathSeparator se utiliza para separar rutas de archivos individuales en una lista de rutas de archivos. Considere en Windows, la variable de entorno PATH. Usas a ; para separar las rutas de archivos en Windows File.pathSeparator ; .

  • File.separator es / o \ que se utiliza para dividir la ruta a un archivo específico. Por ejemplo, en Windows es \ o C:\Documents\Test

Utiliza separador cuando está creando una ruta de archivo. Entonces en Unix el separador es / . Entonces, si quisieras construir la ruta /var/temp unix, lo harías así:

 String path = File.separator + "var"+ File.separator + "temp" 

Utiliza pathSeparator cuando se trata de una lista de archivos como en un classpath. Por ejemplo, si su aplicación tomó una lista de 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

Entonces, 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 de separador estático. Para una mejor comprensión, entendamos con la ayuda de algún código

  1. separador: carácter separador de nombre predeterminado dependiente de la plataforma como Cadena. Para Windows, es ‘\’ y para unix es ‘/’
  2. separatorChar: Igual que el separador pero es char
  3. pathSeparator: variable dependiente de plataforma para el separador de ruta. Por ejemplo PATH o CLASSPATH variable lista de rutas separadas por ‘:’ en sistemas Unix y ‘;’ en el sistema de Windows
  4. pathSeparatorChar: Igual que pathSeparator pero es char

Tenga en cuenta que todas estas son variables finales y dependen del sistema.

Aquí está el progtwig 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 progtwig anterior en el sistema Unix:

 File.separator = / File.separatorChar = / File.pathSeparator = : File.pathSeparatorChar = : 

Salida del progtwig en el sistema de Windows:

 File.separator = \ File.separatorChar = \ File.pathSeparator = ; File.pathSeparatorChar = ; 

Para que nuestra plataforma de progtwig 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");