Cómo escapar de las barras invertidas y del carácter de escape generado automáticamente en la ruta del archivo en Java

Tengo un problema muy pequeño y simple, pero no estoy obteniendo soluciones al respecto. En realidad estoy obteniendo una ruta de archivo CSV usando el selector de archivos. Estoy ingresando los datos en este archivo csv en la base de datos usando load local infile query.

Supongamos que mi ruta de archivo ingresada es “C: \ title.csv”. Cuando coloque esta cadena para consultar, verá la combinación \ t en la ruta. Esto \ t que en realidad es parte de la ruta del archivo y no del carácter de escape ‘\ t’. Pero java y mysql lo consideran como un personaje de escape.

luego intenté reemplazar ‘\’ en la cadena de ruta del archivo con “\\” usando la siguiente línea de código.

String filepath="C:\title.csv"; String filepath2=filepath.replace("\\","\\\\"); 

Todavía no hay efecto en la ruta del archivo y aún considera el ‘\ t’ como carácter de escape.

¿Entonces mi pregunta es cómo resolver este problema sin cambiar el nombre del archivo?

Si tenemos un camino como

 String filepath="C:\new folder\title.csv"; 

Considerará el \ n y \ t como carácter de escape. ¿Cómo resolver este problema si el nombre del archivo o carpeta en la ruta causa el carácter de escape?

Use una barra doble en el literal de la cadena Java para escapar de una barra inclinada:

 String s = "c:\\new folder\\title.csv"; 

Si un usuario final ingresa una cadena en un JFileChooser, la variable de cadena contendrá todos los caracteres ingresados ​​por el usuario. El escape solo es necesario cuando se utilizan literales String en el código fuente de Java.

Y use una instrucción preparada para insertar cadenas en una tabla de base de datos. Esto escapará adecuadamente de los caracteres especiales y evitará los ataques de inyección SQL . Lea más sobre declaraciones preparadas en el tutorial de Java sobre JDBC .

necesitas usar:

  String filepath2=filepath.replace("\\","\\\\"); 

String filepath2=filepath.replace("\","\\") no es un código válido – \ es un carácter especial en literales de cadena y necesita ser escapado:

 String escapedFilepath = filepath.replace("\\","\\\\"); //double all backslashes 

Debe usar escaping en el literal inicial ( filepath ), por ejemplo:

 String filepath="C:\\title.csv"