在java中,为了保证跨平台时目录可以正确被访问,我们会使用到File.separator来获取当前系统的目录分隔符。
但是如果使用replaceAll替换这个分隔符会出现下边的异常。
path = path.replaceAll(File.separator,"-"); ===================================== Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
我们来看一下replaceAll的API描述
Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll. Use Matcher.quoteReplacement to suppress the special meaning of these characters, if desired.
注意:”\“和"$"在做为替换字符串的时候,可能会出现一个不同的结果,建议我们使用Matcher.quoteReplacement函数先对替换字符进行转译。
System.out.println(File.separator); //输出 "\" System.out.println(Matcher.quoteReplacement(File.separator)); //输出"\\" System.out.println("/"); //输出 "/" System.out.println(Matcher.quoteReplacement("/")); //输出 "/" System.out.println("$"); //输出 "/" System.out.println(Matcher.quoteReplacement("$")); //输出 "/"
上边的语句应该修改为:
path = path.replaceAll(Matcher.quoteReplacement(File.separator),"-");
最后来看看Matcher.quoteReplacement(sep)的API说明。
java.util.regex.Matcher public static java.lang.String quoteReplacement(java.lang.String s) Returns a literal replacement String for the specified String. This method produces a String that will work as a literal replacement s in the appendReplacement method of the Matcher class. The String produced will match the sequence of characters in s treated as a literal sequence. Slashes ('\') and dollar signs ('$') will be given no special meaning. Parameters: s - The string to be literalized Returns: A literal string replacement Since: 1.5
相关推荐
在Android开发中,Java编程时常会遇到`java.lang.IllegalArgumentException`异常,这通常表示传入的参数不符合方法的要求。在本例中,错误信息“contains a path separator”提示我们问题可能与路径分隔符有关,这...
这个问题主要出现在尝试为`Separator`设置自定义`ContextMenu`时。本文将深入探讨这个问题,并提供解决方案。 首先,让我们了解`Separator`和`ContextMenu`的基本概念。`Separator`是WPF中的一个控件,通常用作分隔...
Window系统无法调用OpenCV代码报错:java.lang.UnsatisfiedLinkError: Directory separator should not appear in library name: C:\Windows\System32\opencv_java343.dll。出现该问题主要是安装的Windows系统缺乏...
为了解决这个问题,可以使用 `DIRECTORY_SEPARATOR` 替换硬编码的反斜杠,这样无论在哪种操作系统上,代码都能正确处理路径。 总之,`DIRECTORY_SEPARATOR` 是PHP中处理路径时的关键常量,它允许你在不关心操作系统...
标题中的"fileseparator"通常指的是文件路径分隔符,在Windows系统中,它是反斜杠("\"),而在大多数Unix/Linux系统中,它是正斜杠 ("/")。这个术语在编程和文件处理中非常常见,用于构建文件路径。在这个上下文中,...
在PHP编程语言中,`DIRECTORY_SEPARATOR` 和 `PATH_SEPARATOR` 是两个非常重要的预定义常量,它们主要用于处理路径和包含文件时的平台兼容性问题。理解这两个常量的用途可以帮助开发者编写跨平台的PHP代码。 1. **...
在进行服务器端编程时,特别是涉及到与操作系统交互的部分,熟练掌握`PATH_SEPARATOR`等常量的应用是十分必要的。希望本文对理解PHP的`PATH_SEPARATOR`常量及其用途有所帮助,同时也提醒开发者关注更多与系统兼容性...
如果项目是在封闭的环境中运行,且只需要区分Windows和非Windows系统,那么使用PATH_SEPARATOR常量的方法是非常方便的。如果应用需要更详细的系统信息,则可能需要依赖其他PHP函数或系统调用来获取更多信息。
在 PHP 开发中,文件路径分隔问题是一个经常遇到且必须...无论是在直接引用文件路径,还是在进行路径字符串动态处理时,合理使用 DIRECTORY_SEPARATOR 都能减少因平台差异导致的问题,并提高代码的可维护性和可移植性。
在Java编程中,某些方法可能在特定对象或特定条件下不支持某个操作,当尝试执行这些操作时,就会抛出此异常。 在给定的描述中,问题出在MyBatis框架的使用上。MyBatis是一个优秀的持久层框架,它允许开发者将SQL...
这是本人在进行使用递归替换HTML文件中的图片内容时,所遇到的问题解决方案,喜欢能够帮到大家,让自己懂得东西越来愈多,做更多的分享
在PHP开发过程中,路径管理是不可或缺的一部分,尤其是在处理文件包含、资源引用以及脚本执行时。"php相对路径解决方法"这个主题主要关注如何在PHP中有效地使用相对路径来解决文件定位的问题。以下是对这个话题的...
#分隔器 日志分隔符到您的控制台等等 ns = require('separator');ns.separator('=').log(); // logs a string of ='s to the console => ==========...ns.separator('+=', 13).log(); // logs to the console, ...
在Java中,处理XML文件时,我们可能会遇到需要分割XML内容的情况,这就是"XML_Separator"所指的场景。这个项目可能是一个用于解析XML并按照特定规则分割其内容的工具或库。 在Java中,处理XML主要依赖于`javax.xml`...
在使用时,需要注意SQL字符串的编写规范,理解#{}和${}的区别,以及合理利用`<foreach>`标签进行批量操作。这使得MyBatis不仅简化了数据库操作,也提升了开发效率。在实际应用中,应结合业务需求,合理选择查询方式...
在使用MyBatis进行批量数据插入时,可能会遇到MapperProvider结合MessageFormat拼接SQL语句执行时出现错误的问题。本文将深入分析这种报错的原因,并提供相应的解决策略。 首先,让我们看看问题的根源。在给出的...
解决方法是检查并确保命令前有正确的制表符,或在编辑器中重新输入。 通过这一周的学习,我们不仅掌握了GCC、GDB和Makefile的基本用法,还了解了如何解决在实际操作中可能遇到的问题。这些知识和技能对于进行安全的...