繁体   English   中英

如何在java中转义正斜杠以便在路径中使用它

[英]How to escape forward slash in java so that to use it in path

我试图在String中转义正斜杠,可以在使用Java的路径中使用它。
例如: String:: "Test/World"
现在我想使用上面的字符串路径。同时我必须确保"Test/World"将在路径中出现。 对不起,如果它的副本,但我找不到任何满意的解决方案。 我的目的是使用上面的字符串在Zookeeper中创建节点。
例:
如果我使用以下字符串在Zokkeeper中创建节点,那么我应该将“Test / World”作为单个节点而不是单独的。 Zookeeper接受“/”作为路径分隔符,在某些情况下我不需要。 /zookeeper/HellowWorld/Test/World

谢谢

您应该了解File.separator ...这比\\/更安全,因为Linux和Windows使用不同的文件分隔符。 使用File.separator将使程序运行,无论它运行的平台如何,毕竟,这是JVM的重点。 - 正斜杠可以工作,但是, File.separator会让你对最终用户更有信心。

不需要逃避 "/ ......你应该看到这个问题的答案

String fileP = "Test" + File.separator + "World";

为了在Java中转义字符,请使用“\\”,例如:

String strPath = "directory\\file.txt".

我相信你不需要逃避正斜杠,例如:“/”

我对Zookeeper一无所知。 但它看起来好像你试图保留一个字符串列表,如"zookeeper", "HellowWorld", "Test/World" ,然后你想用它来创建Zookeeper节点创建一个路径名文件系统。 (我假设如果您正在使用文件系统,那么您将在Test子目录中拥有一个子目录Test和一个文件或子目录World 。如果您实际上尝试创建一个名为的单个文件或目录Test/World ,放弃.Linux和Windows都会和你一起战斗。)

如果是这种情况,那么不要试图将“路径”表示为您在程序中传递的简单String 而是将其表示为String[]ArrayList<String> ,然后仅在需要文件系统路径名时将其转换为文件系统路径名。 或者,更好的是,使用getFilesystemPath方法定义自己的类。 过早地将节点名称列表转换为路径名String ,然后尝试稍后从String重构列表,这是一种糟糕的方法,因为您丢弃了以后需要的数据(特别是,您丢弃了哪些信息) / characters是分隔符,哪些是节点名称的一部分)。

编辑:如果你还需要一个Zookeeper的单一路径名,正如你在另一个评论中提到的那样,我无法帮助你,因为我不知道Zookeeper并且没有找到任何东西快速查看文档。 如果有一种方法可以转义Zookeeper的斜杠,那么我仍然建议使用getFilesystemPath方法和getZookeeperPath方法定义自己的类,因为在某些情况下这两种方法可能会返回不同的String 该类将在内部将名称保存为数组或ArrayList

让我重新提一下你的问题。 您正在尝试在zookeeper中创建一个节点,它应该是/ zookeeper / HelloWorld / NodeName。 但最后一部分“NodeName”实际上是“Test / World”,你正在寻找逃避“/”的方法,因此节点名称可以是“Test / World”。

除非你尝试使用unicode,否则我认为它不会逃脱char。

尝试\\ u002F,它等同于/。

我们正在尝试解决完全相同的问题(使用文件系统路径作为zookeeper中的节点名称)a我们还没有找到如何在节点名称中使用“/”的方法。

解决方案是将'/'替换为某些字符,这些字符不能出现在您的节点名称中。 对于将是“/”或“\\ 0”的路径,在这种情况下这对我们无益。

其他可能性是用节点名称中允许的字符串替换'/',例如“Test / World” - >“Test%@ World”,“Test%World” - >“Test %% World”并添加转义/ de - 节省和装载。

如果有更直接的方式,我很乐意听到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM