如何将反斜杠后跟';t';或者java中正斜杠文件路径中转义字符中的任何其他字母或字符?

如何将反斜杠后跟';t';或者java中正斜杠文件路径中转义字符中的任何其他字母或字符?,java,string,filepath,backslash,Java,String,Filepath,Backslash,我正在将CSV文件导入MySQL数据库。这可以通过使用java.mysql支持文件路径中的正斜杠来实现。如果用户给出路径 String filepath=" c:\upload\date\csv\sample.csv"; 我们可以使用以下代码行将'\'替换为'/' String filepath2=filepath.replace("\\","/"); 但当用户输入如下路径时 String filepath=" c:\test.csv"; 替换功能无法将“\\”替换为“/” 由于文件路径中

我正在将CSV文件导入MySQL数据库。这可以通过使用java.mysql支持文件路径中的正斜杠来实现。如果用户给出路径

String filepath=" c:\upload\date\csv\sample.csv";
我们可以使用以下代码行将
'\'
替换为
'/'

String filepath2=filepath.replace("\\","/");
但当用户输入如下路径时

String filepath=" c:\test.csv";
替换功能无法将
“\\”
替换为
“/”

由于文件路径中的
'\'
不会保留
'\'
,因为
'\'
后面跟着't',它会变成
'\t'
转义字符。 每一个转义序列都会出现这种类型的问题

我想在路径中搜索反斜杠,并将其替换为正斜杠,从而得出以下结论:

c:/test.csv
这是怎么做到的?
如何解决此问题?

如果您是通过JFileChooser获取值,那么它将更像这样:

String value = "c:\\test.csv"; // This really only has a single backslash
但是你不需要用正斜杠代替反斜杠。我的猜测是,您正在生成的SQL中直接包含值:不要这样做。使用带有参数的预处理语句,您可能会发现问题就这样消失了。。。突然之间,您也不会像以前那样容易受到SQL注入攻击

如果确实需要将反斜杠转换为正斜杠,可以使用:

String newValue = oldValue.replace("\\", "/");

。。。但是您不必这样做。

如果您是通过JFileChooser获取值,那么它将更像这样:

String value = "c:\\test.csv"; // This really only has a single backslash
但是你不需要用正斜杠代替反斜杠。我的猜测是,您正在生成的SQL中直接包含值:不要这样做。使用带有参数的预处理语句,您可能会发现问题就这样消失了。。。突然之间,您也不会像以前那样容易受到SQL注入攻击

如果确实需要将反斜杠转换为正斜杠,可以使用:

String newValue = oldValue.replace("\\", "/");

。。。但是您不必这样做。

您所描述的不会有帮助,因为从例如
\t
到选项卡的替换发生得太早,以至于它甚至不会出现在字符串中。可能的重复需要区分用户输入的路径和Java源代码中出现的路径。我怀疑用户是否在编写源代码……就像@JonSkeet所说的,当您从用户输入中获得字符串
filepath
时,您不会有这个问题。正是Java编译器将
\t
转换为制表符,因此它显然只会出现在实际的源代码中。@Jon Skeet@Daniel Brockman我正在使用JFileChooser获取文件路径。Daniel Brockman先生,请告诉我如何避免转换为“\t”?您所描述的不会有帮助,因为从
\t
到选项卡的替换发生得太早,以至于它甚至不会出现在字符串中。可能的重复需要区分用户输入的路径和Java源代码中出现的路径。我怀疑用户是否在编写源代码……就像@JonSkeet所说的,当您从用户输入中获得字符串
filepath
时,您不会有这个问题。正是Java编译器将
\t
转换为制表符,因此它显然只会出现在实际的源代码中。@Jon Skeet@Daniel Brockman我正在使用JFileChooser获取文件路径。Daniel Brockman先生,请告诉我如何避免转换为“\t”?您好,先生!实际上,从JFileChooser获取的路径显示在JtextField中,然后存储在String对象中,我直接在localfile查询中的加载数据中使用该String对象。所以它给你们提到的路径带来了问题,因为它在“t”之前只有一个反斜杠。字符串对象中的路径只有一个反斜杠。所以我试着用两个反斜杠替换带有替换函数的反斜杠,但失败了。@Param Ganak:为什么要用两个反斜杠替换一个反斜杠?它应该是好的,因为它是。听起来问题出在您使用字符串的代码中,但您没有告诉我们该代码是什么,也没有告诉我们它导致了什么问题。您好,先生!实际上,从JFileChooser获取的路径显示在JtextField中,然后存储在String对象中,我直接在localfile查询中的加载数据中使用该String对象。所以它给你们提到的路径带来了问题,因为它在“t”之前只有一个反斜杠。字符串对象中的路径只有一个反斜杠。所以我试着用两个反斜杠替换带有替换函数的反斜杠,但失败了。@Param Ganak:为什么要用两个反斜杠替换一个反斜杠?它应该是好的,因为它是。听起来问题出在使用字符串的代码中,但您没有告诉我们该代码是什么,也没有告诉我们它导致了什么问题。