Цей код спочатку перевіряє наявність каталогу і створює його, якщо ні, а потім створює файл. Зверніть увагу, що я не зміг перевірити деякі ваші виклики методів, оскільки у мене немає вашого повного коду, тому я припускаю, що виклики таких речей, як getTimeStamp()і getClassName()будуть працювати. Ви також повинні зробити щось із можливого, IOExceptionщо може бути викинуте під час використання будь-якого з java.io.*класів - або ваша функція, яка пише файли, повинна викинути це виняток (і це буде оброблятися в іншому місці), або ви повинні зробити це безпосередньо в методі. Крім того, я припустив, що idце тип String- я не знаю, оскільки ваш код не чітко його визначає. Якщо це щось інше на зразок an int, ви, мабуть, повинні передати його aString перш ніж використовувати його у fileName, як я це робив тут.
Крім того, я замінив ваші appendдзвінки на concatабо, +як я вважав доречним.
public void writeFile(String value){
String PATH = "/remote/dir/server/";
String directoryName = PATH.concat(this.getClassName());
String fileName = id + getTimeStamp() + ".txt";
File directory = new File(directoryName);
if (! directory.exists()){
directory.mkdir();
}
File file = new File(directoryName + "/" + fileName);
try{
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(value);
bw.close();
}
catch (IOException e){
e.printStackTrace();
System.exit(-1);
}
}
Ймовірно, вам не слід використовувати такі імена голих шляхів, якщо ви хочете запустити код у Microsoft Windows - я не впевнений, що це буде робити з /іменами файлів. Для повної переносимості вам, мабуть, слід використовувати щось на зразок File.separator для побудови своїх шляхів.
Редагувати : Відповідно до коментаря JosefScript нижче, не потрібно перевіряти наявність каталогів. directory.mkdir() Виклик буде повертати , trueякщо він був створений каталог, і falseякщо він не зробив, в тому числі в разі , коли каталог вже існує.