Этот код проверяет существование каталога первого и создает его, если нет, то и создает файл впоследствии. Обратите внимание, что я не мог проверить некоторые вызовы методов, так как у меня нет полного кода, поэтому я принимаю вызовы на такие вещи, как getTimeStamp()
и getClassName()
. Вы также должны сделать что-то с возможным IOException
, которое может быть выброшено при использовании любого из классов java.io.*
- либо ваша функция, которая пишет файлы, должна выбросить это исключение (и оно будет обрабатываться в другом месте), либо вы должны сделать это непосредственно в этом методе. Кроме того, я предположил, что id
имеет тип String
- я не знаю, поскольку ваш код явно не определяет его. Если это что-то вроде int
, вы должны, вероятно, применить его к String
, прежде чем использовать его в 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();
// If you require it to make the entire directory path including parents,
// use directory.mkdirs(); here instead.
}
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
, если это не так, включая случай, когда каталог уже существует.
Вы только назвать 'file.createNewFile()' внутри вашего условной 'если это (! Directory.exists()) {}' - Дон Вам нужно это сделать, даже если каталог существует? –
Да, мне нужно создать файл даже, даже если каталог существует – Sri
Итак, что, если вы положите после 'if (! Directory.exists()) {}' a 'else', который также создает файл? 'else {file.createNewFile(); } '- это имеет значение? –