Я сталкиваюсь с странной проблемой в наших доменах dev. Таким образом, в настоящее время наше приложение java работает на jdk1.6, мы планируем обновить его до 1,8. Так в настоящее время следующий код отлично работает в версии 1.6, но возвращает исключениеСоздание временного каталога в jdk 6 vs jdk 8
java.io.IOException: Unable to create temporary file, C:\Users\xxxxx\xxxxx\Local\Temp\XYZDirectory at java.io.File$TempDirectory.generateFile(File.java:1921) at java.io.File.createTempFile(File.java:2010) at java.io.File.createTempFile(File.java:2070)
1.8. код выглядит следующим образом -
File file = null;
try {
file =
File.createTempFile("XYZ", "Directory" + System.getProperty("file.separator"));
file.delete();
file.mkdirs();
} catch (final IOException e) {
e.printStackTrace();
}
return file;
Мы хотим, чтобы наш продукт был совместим с 1.6 и 1.8.
После некоторых исследований я обнаружил, что я, возможно, придется использовать следующий метод Files
класса
public static Path createTempDirectory(Path dir,
String prefix,
FileAttribute<?>... attrs)
throws IOException
Так у меня есть следующие вопросы -
1) Почему File.createTempFile
генерирует исключение в 1.8?
2) Какова концептуальная разница между этими двумя методами?
3) Более того, если File.createTempFile
больше не поддерживается, почему он не устарел?
4) Каков подходящий способ решения этой проблемы? Другими словами, я могу сделать программную проверку, чтобы использовать соответствующий метод на основе версии jdk, установленной в виртуальной машине, а затем продолжить создание временного каталога, но это лучший способ решить эту проблему?
Java 8 не нравится вы пытаетесь включить 'System.getProperty ("File.separator")', как часть строки суффикса. –
* «Почему File.createTempFile выбрасывает исключение в 1.8?» * Похоже, он не позволяет этому хаккишу (и плохому) способу создать временную директорию. – Tom
'Files.createTempDirectory' - это то, что вы должны использовать. Не взламывайте свой путь. Я даже сбив с толку, что это сработало на Java 6. – Tunaki