Кажется, что Fortify может быть слишком строгим здесь. Даже их сайт говорит, что использование File.separator
, как это должно быть в порядке.
Я не вижу проблем с переносимостью при использовании File.separator
. Даже в системах OpenVMS, где пути к файлам имеют формат devicename:[directory.subdirectory]file.ext;version
, среда выполнения Java внутренне переводит между разделителем /
и правильным форматом VMS.
Во-первых, дважды проверьте с помощью инструмента «Поиск», что у вас нет символов \
или /
ни в одной из строк в filenames[]
(не полагайтесь только на визуальный контроль). Если такого персонажа точно нет, перейдите к предложению ниже.
Старайтесь вообще избегать File.separator
. Вместо этого попробуйте использовать Paths.get :
public static final Path RESOURCE_DIR = Paths.get(
"home", "xxx", "ooo", "Resource");
String[] fileNames = {
"",
"2.5.1aaaaa.pdf",
"2.5.2bbbbb.pdf",
"2.5.3ccccc.pdf",
.......
"5.1.4甲甲甲甲甲.pdf",
};
String fileName = null;
File file = null;
int iParam = Integer.parseInt(sParam);
if (iParam >= 1 && iParam <= 26) {
fileName = fileNames[iParam];
file = RESOURCE_DIR.resolve(filePath).toFile();
else {
addFacesMessage("wrong parameter");
return null;
}
Хорошо, когда ты это делаешь?