How to escape the backslashes and the automatically generated escape character in file path in java

为君一笑 提交于 2019-11-26 08:28:13

问题


I have very small and simple problem but I am not getting solutions on it. Actually I am getting a CSV file path using file chooser. I am entering the data in this csv file in to database using load data local infile query.

Suppose my entered file path is \"C:\\title.csv\" When I put this string in to query the you will see the \\t combination in the path. This \\t which is actually part of the file path and not the escape character \'\\t\'. But the java and mysql consider it as escape character.

then I tried to replace \'\\\' in the file path string with \"\\\\\" using following code line.

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

Still there is not effect on the file path and it still consider the \'\\t\' as escape character.

So my question is how to solve this problem without changing the name of the file?

If we have path like

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

It will consider the \\n and \\t as escape character. how to solve this problem if the name of the file or folder in path cause for escape character?


回答1:


Use a double slash in Java string literal to escape a slash :

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

If an end user enters a string in a JFileChooser, the string variable will contain all the characters entered by the user. Escaping is only needed when using String literals in Java source code.

And use a prepared statement to insert strings into a database table. This will properly escape special characters and avoid SQL injection attacks. Read more about prepared statements in the Java tutorial about JDBC.




回答2:


you need to use:

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



回答3:


String filepath2=filepath.replace("\","\\") is not valid code - \ is a special character in string literals and needs to be escaped:

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



回答4:


You have to use escaping in the initial literal (filepath), for example:

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


来源:https://stackoverflow.com/questions/7553634/how-to-escape-the-backslashes-and-the-automatically-generated-escape-character-i

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!