2012-04-01 5 views
0

Ich wollte SELECT ... WHERE LIKE Abfrage für den Pfad meiner Datei (VARCHAR) in meiner Datenbank verwenden. Diese Dateien können jedoch von Windows und UNIX/LINUX in die Datenbank eingefügt werden, so dass die Dateitrennzeichen abweichen können, was den Operator unbrauchbar macht. Ich habe versucht, Wege in meiner DTO set() Methode, wie zu konvertieren:Wie kann sichergestellt werden, dass Dateipfade in der Datenbank denselben Dateitrenner verwenden?

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, "/"); 
    } 

Dies funktioniert, sondern macht auch Programm verhält sich anders, und es ist schwer zu ermitteln, warum es (wahrscheinlich geschieht gibt es einige Linien versuchen, die Pfade der Datei DTO als String zu vergleichen, ohne daraus ein File-Objekt zu erzeugen). Gibt es eine Lösung für dieses Problem - ich meine vielleicht so etwas wie File.setReturnedFilePathSeparator(char separator); so alle Dateiobjekte werden einen Typ von Separator verwenden, wenn Pfad von ihm erhalten.

Antwort

1

Sie könnten alle Pfade als URIs speichern. Dies würde Ihnen eine vom Betriebssystem unabhängige einheitliche Darstellung garantieren. Sie müssen sich nicht mehr um Dateitrennzeichen kümmern.

Verwandte Themen