Как обеспечить, чтобы пути к файлам в базе данных имели одинаковый разделитель файлов? - PullRequest
0 голосов
/ 01 апреля 2012

Я хотел использовать 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 будут использовать один тип разделителя при получении пути от него.

1 Ответ

1 голос
/ 01 апреля 2012

Вы можете сохранить все пути как URI . Это гарантирует вам единообразное представление независимо от ОС. Вам больше не придется заботиться о разделителях файлов.

...