Цей код спочатку перевіряє наявність каталогу і створює його, якщо ні, а потім створює файл. Зверніть увагу, що я не зміг перевірити деякі ваші виклики методів, оскільки у мене немає вашого повного коду, тому я припускаю, що виклики таких речей, як 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
якщо він не зробив, в тому числі в разі , коли каталог вже існує.