ruta - insertar/modificar/eliminar datos de un txt en java
¿Cómo obtener una ruta de archivo absoluta limpia en Java independientemente del sistema operativo? (3)
Intenta con esto:
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
Path path = Paths.get("myFile.txt");
Path absolutePath = path.toAbsolutePath();
System.out.println(absolutePath.toString());
}
}
Aquí está el problema. Después de algunas concatenaciones puedo tener una cadena como esta
"C:/shared_resources/samples//import_packages//catalog.zip"
o incluso esto
"C:/shared_resources/samples/subfolder/..//import_packages//catalog.zip"
Quiero tener algún código que convierta esa cadena en una ruta con separadores uniformes.
La primera solución que me viene a la mente es usar el new File(srcPath).getCanonicalPath()
, sin embargo, aquí está la parte difícil. Este método se basa en el sistema donde se invocan las pruebas. Sin embargo, necesito pasar la cadena a una máquina remota (nodo Selenium Grid con un navegador allí), y los sistemas aquí y allá son Linux y Windows respectivamente. Por lo tanto, tratar de new File("C:/shared_resources/samples//import_packages//catalog.zip").getCanonicalPath()
produce algo como "/home/username/ourproject/C:/shared_resources/samples/import_packages/catalog.zip"
. Y el uso de la sustitución de expresiones regulares no parece una buena solución también.
¿Hay una manera de podar el camino y hacer que los delimitadores sean uniformes (y posiblemente resuelvan los de '''') sin tratar de absolutizarlo implícitamente?
Pruebe FilenameUtils.normalize()
de Apache commons-io
por ejemplo aquí está tu camino:
String jarName = "C:/shared_resources/samples//import_packages//catalog.zip"
jarName.replaceAll("/", "//");
jarName.replaceAll("..", "/");