我想在我的数据库中对我的文件路径(VARCHAR)使用SELECT ... WHERE LIKE
查询。
但是这些文件可以从Windows和UNIX / LINUX插入到数据库中,因此文件分隔符可能不同,这会使WHERE LIKE
运算符无效。
我试图在我的DTO set()方法中转换路径,如:
public static final String FILE_SEPARATOR = File.separator;
public static final String ESCAPED_FILE_SEPARATOR = Pattern.quote(FILE_SEPARATOR);
public static String createPortablePath(String path) {
if ((FILE_SEPARATOR).equals("/")) {
return path;
} else {
return path.replaceAll(ESCAPED_FILE_SEPARATOR, "/");
}
这有效,但也会使程序行为不同,并且很难确定它为什么会发生(可能有些行尝试将文件DTO的路径作为字符串进行比较而不从中创建File对象)。有没有解决这个问题的方法 - 我的意思可能就是File.setReturnedFilePathSeparator(char separator);
,所以所有File对象在从它获取路径时都会使用一种类型的分隔符。