2012-04-01 9 views
0

データベースのファイルパス(VARCHAR)に対してSELECT ... WHERE LIKEクエリを使用したかったのです。 しかし、これらのファイルは、WindowsとUNIX/LINUXからDatabaseに挿入することができるので、ファイルの区切りが異なるため、WHERE LIKE演算子は役に立たなくなります。 私は同じように私DTOセット()メソッド内のパスを変換しようとした:これは動作しますが、また、(おそらくいくつかの行があるプログラムが異なっを振る舞い、そして起こっている理由を判断することは困難である可能データベース内のファイルパスが同じファイル区切りを共有する方法を保証するには?

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.setReturnedFilePathSeparator(char separator);のようなものです。そのため、すべてのFileオブジェクトはパスを取得する際に1つのタイプの区切り文字を使用します。

答えて

1

すべてのパスをURIsとして保存することができます。これにより、OSとは独立した一様な表現が保証されます。あなたはファイルセパレータを気にする必要はありません。

関連する問題