En la Fileclase hay dos cadenas, separatory pathSeparator.
¿Cual es la diferencia? ¿Cuándo debo usar uno sobre el otro?
En la Fileclase hay dos cadenas, separatory pathSeparator.
¿Cual es la diferencia? ¿Cuándo debo usar uno sobre el otro?
Respuestas:
Si quieres decir File.separatory File.pathSeparatorluego:
File.pathSeparatorse 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.pathSeparatorsería ;.
File.separatores /o \eso se usa para dividir la ruta a un archivo específico. Por ejemplo en Windows es \oC:\Documents\Test
File.separatordebería estar File.fileSeparatorrelacionado 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 pathSeparatorcuando 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/tempentonces es inútil de usar File.separatorya que ya tiene un código dependiente de la plataforma. También podría codificar el camino.
java.io.FileLa 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");
Stringy chardevuelto por los métodos mencionados anteriormente devuelve la barra invertida con el formato correcto (si está en Windows).