En la File
clase hay dos cadenas, separator
y pathSeparator
.
¿Cual es la diferencia? ¿Cuándo debo usar uno sobre el otro?
En la File
clase hay dos cadenas, separator
y pathSeparator
.
¿Cual es la diferencia? ¿Cuándo debo usar uno sobre el otro?
Respuestas:
Si quieres decir File.separator
y File.pathSeparator
luego:
File.pathSeparator
se usa para separar rutas de archivos individuales en una lista de rutas de archivos. Considere en Windows, la variable de entorno PATH. Usas un;
para separar las rutas de archivos de Windows así sucesivamente File.pathSeparator
sería ;
.
File.separator
es /
o \
eso se usa para dividir la ruta a un archivo específico. Por ejemplo en Windows es \
oC:\Documents\Test
File.separator
debería estar File.fileSeparator
relacionado conFile.pathSeparator
File
. Creo que la parte del archivo está implícita. Pero quién sabe por qué hicieron mucho de lo que hicieron con Java.
Utiliza el separador cuando crea una ruta de archivo. Entonces en unix el separador es /
. Entonces, si quisieras construir la ruta de Unix /var/temp
, lo harías así:
String path = File.separator + "var"+ File.separator + "temp"
Utiliza el pathSeparator
cuando se trata de una lista de archivos como en un classpath. Por ejemplo, si su aplicación tomó una lista de tarros 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ía algo como esto:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
entonces es inútil de usar File.separator
ya que ya tiene un código dependiente de la plataforma. También podría codificar el camino.
java.io.File
La clase contiene cuatro variables de separador estático. Para una mejor comprensión, comprendamos con la ayuda de algún código
Tenga en cuenta que todas estas son variables finales y dependen del sistema.
Aquí está el programa de Java para imprimir estas variables de separación. 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 el sistema Windows:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
Para hacer que nuestra plataforma de programa sea independiente, siempre debemos usar estos separadores para crear la ruta del 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");
String
y char
devuelto por los métodos mencionados anteriormente devuelve la barra invertida con el formato correcto (si está en Windows).