9

我有一个非常小而简单的问题,但我没有得到解决方案。实际上,我正在使用文件选择器获取 CSV 文件路径。我正在使用加载数据本地 infile 查询将此 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

4 回答 4

14

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

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

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

并使用准备好的语句将字符串插入数据库表中。这将正确地转义特殊字符并避免SQL 注入攻击。在有关 JDBC 的 Java 教程中阅读有关预准备语句的更多信息。

于 2011-09-26T10:26:02.123 回答
6

你需要使用:

 String filepath2=filepath.replace("\\","\\\\");
于 2011-09-26T10:25:08.657 回答
3

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

String escapedFilepath = filepath.replace("\\","\\\\"); //double all backslashes
于 2011-09-26T10:22:09.843 回答
0

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

String filepath="C:\\title.csv"
于 2011-09-26T10:25:24.120 回答