Я поддерживаю хранимые процедуры ( MySQL имеет поддержку хранимых процедур с 5.0 ) с точки зрения безопасности - преимущества -
Недостатки -
Вместо того, чтобы сохранять все основанным на операция со строками, необходимо использовать класс, который разработан для представления пути файловой системы.
при использовании Java 7 или Java 8 необходимо сильно рассмотреть использование java.nio.file.Path
; Path.resolve
может использоваться для объединения одного пути с другим, или со строкой. Paths
класс помощника полезен также. Например:
Path path = Paths.get("foo", "bar", "baz.txt");
, Если необходимо обслужить pre-Java-7 среды, можно использовать java.io.File
, как это:
File baseDirectory = new File("foo");
File subDirectory = new File(baseDirectory, "bar");
File fileInDirectory = new File(subDirectory, "baz.txt");
, Если Вы хотите его назад как строку позже, можно звонить getPath()
. Действительно, если бы Вы действительно хотели подражать Path.Combine
, Вы могли бы просто записать что-то как:
public static String combine(String path1, String path2)
{
File file1 = new File(path1);
File file2 = new File(file1, path2);
return file2.getPath();
}
Основной ответ должен использовать объекты Файла. Однако Commons IO действительно имеет класс FilenameUtils , который может сделать такого рода вещь, такой как concat () метод.
Это решение предлагает интерфейс для присоединения к фрагментам пути от Строки [] массив. Это использует java.io. Файл. Файл (Строковый родитель, Строковый ребенок) :
public static joinPaths(String[] fragments) {
String emptyPath = "";
return buildPath(emptyPath, fragments);
}
private static buildPath(String path, String[] fragments) {
if (path == null || path.isEmpty()) {
path = "";
}
if (fragments == null || fragments.length == 0) {
return "";
}
int pathCurrentSize = path.split("/").length;
int fragmentsLen = fragments.length;
if (pathCurrentSize <= fragmentsLen) {
String newPath = new File(path, fragments[pathCurrentSize - 1]).toString();
path = buildPath(newPath, fragments);
}
return path;
}
Затем можно просто сделать:
String[] fragments = {"dir", "anotherDir/", "/filename.txt"};
String path = joinPaths(fragments);
Возвраты:
"/dir/anotherDir/filename.txt"