如何确保数据库中的文件路径共享同一个文件分隔符?

时间:2012-04-01 14:59:05

标签: java java-io

我想在我的数据库中对我的文件路径(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对象在从它获取路径时都会使用一种类型的分隔符。

1 个答案:

答案 0 :(得分:1)

您可以将所有路径存储为URIs。这将保证您独立于操作系统的统一表示。您不必再关心文件分隔符了。