Инструмент статического анализа при запуске в моем Java-проекте выдает ошибку «Ошибка переносимости в разделителе файлов», и мне нужно ее исправить. В моем коде у меня есть файл небезопасный. Я хочу использовать метод для преобразования его в fileSafe (объяснено ниже).
// Case 1
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
Аналогично для путей типа -
// Case 2
//no platform independence, good for Unix systems
File fileUnsafe = new File("/tmp/abc.txt");
// platform independent and safe to use across Unix and Windows
File fileSafe = new File(File.separator+"tmp"+File.separator+"abc.txt");
У меня есть несколько таких файловых адресов в моем проекте, и мне нужно создать какой-нибудь метод преобразования, который мог бы просто взять этот путь в виде строки, добавить к нему File.separator и вернуть его. Как то так -
File fileSafe = new File(someConversionMethod("/tmp/abc.txt"));
Я попробовал этот метод, но он дает мне NullPointerException в случае 2.
public static String someConversionMethod(String target) {
Pattern ptr = Pattern.compile("[\\\\\\\\|/]+");
Matcher mtr = ptr.matcher(target);
return mtr.replaceAll(File.separator + "" + File.separator);
}
Буду признателен за любую помощь в исправлении этого метода или предложении изящного способа справиться с этой ситуацией.
nit - я ссылался на Замена символа на File.separator с помощью java.regex Pattern Matcher , но это не очень помогло в моем случае.