У меня есть требование, когда мне нужно расширить Java-класс FileWriter, чтобы я мог переопределить метод «Запись» для выполнения дополнительной задачи по созданию копии изменяемого файла. Вот мой код:
public class MyFileWriter extends FileWriter {
String fileName;
public MyFileWriter(String file) throws IOException{
super(file + ".tmp");
this.fileName = file;
}
public MyFileWriter(File file, boolean append) throws IOException{
super(File.createTempFile(file.getName(), "tmp") , append);
this.fileName = file.getAbsolutePath();
}
public void write(String str, int off, int len) throws IOException {
successBackupFile(this.fileName,this.backupFilePath);
super.write(str, off, len);
new File(this.fileName+ ".tmp").renameTo(new File(this.fileName));
}
private static void successBackupFile(String fileToBackup,String backupFilePath) {
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
File f = new File(backupFilePath+ timeStamp);
try
{
Files.copy(new File(fileToBackup).toPath(), f.toPath());
}
catch(IOException ioe){
//message
}
}
}
В: В моем коде я собираюсь использовать только 2 из конструктора класса FileWriter. Будет ли хорошей практикой предоставление определения для всех 4 конструкторов. Q: В общем, какие хорошие практики или вещи следует иметь в виду при расширении нативного базового Java-класса
Если кто-то может указать мне на какие-либо хорошие материалы о вещах, которые следует иметь в виду при расширении нативного базового Java-класса,будет очень полезным.