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

发布于 2024-12-06 09:31:38 字数 587 浏览 1 评论 0原文

我有一个非常小而简单的问题,但我没有得到解决方案。 实际上我正在使用文件选择器获取 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 视为转义字符。 如果路径中的文件或文件夹的名称导致转义字符,如何解决此问题?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

花辞树 2024-12-13 09:31:38

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

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

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

并使用准备好的语句将字符串插入数据库表中。这将正确转义特殊字符并避免SQL注入攻击。请参阅有关 JDBC 的 Java 教程,详细了解准备好的语句。

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.

表情可笑 2024-12-13 09:31:38

你需要使用:

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

you need to use:

 String filepath2=filepath.replace("\\","\\\\");
挥剑断情 2024-12-13 09:31:38

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

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

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
指尖上的星空 2024-12-13 09:31:38

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

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

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

String filepath="C:\\title.csv"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文