如何在java中的文件路径中转义反斜杠和自动生成的转义字符

时间:2011-09-26 10:18:01

标签: java escaping filepath backslash

我有一个非常小而简单的问题,但我没有得到解决方案。 实际上我正在使用文件选择器获取CSV文件路径。 我使用load data local infile query将此csv文件中的数据输入到数据库中。

假设我输入的文件路径是“C:\ title.csv” 当我将此字符串放入查询时,您将在路径中看到\ t组合。这个\ t实际上是文件路径的一部分而不是转义字符'\ t'。但java和mysql认为它是转义字符。

然后我尝试使用以下代码行将文件路径字符串中的'\'替换为“\\”。

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

仍然没有对文件路径产生影响,它仍然将'\ t'视为转义字符。

所以我的问题是如何在不改变文件名的情况下解决这个问题?

如果我们有像

这样的路径
String filepath="C:\new folder\title.csv";

它会将\ n和\ t视为转义字符。 如果路径中的文件或文件夹的名称导致转义字符,如何解决此问题?

4 个答案:

答案 0 :(得分:13)

在Java 字符串文字中使用双斜杠来转义斜杠:

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

如果最终用户在JFileChooser中输入字符串,则字符串变量将包含用户输入的所有字符。只有在Java源代码中使用String文字时才需要转义。

使用预准备语句将字符串插入数据库表。这将正确地逃避特殊字符并避免SQL injection攻击。阅读Java tutorial about JDBC中有关预准备语句的更多信息。

答案 1 :(得分:6)

你需要使用:

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

答案 2 :(得分:2)

String filepath2=filepath.replace("\","\\")不是有效代码 - \是字符串文字中的特殊字符,需要进行转义:

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

答案 3 :(得分:0)

您必须在初始文字(filepath)中使用转义,例如:

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