Я хотел использовать SELECT ... WHERE LIKE
запрос к пути моего файла (VARCHAR) в моей базе данных.
Но эти файлы могут быть вставлены в базу данных из 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 будут использовать один тип разделителя при получении пути от него.