Bu kod önce dizinin varlığını kontrol eder ve değilse onu oluşturur ve daha sonra dosyayı oluşturur. Lütfen tam kodunuz olmadığından bazı yöntem çağrılarınızı doğrulayamadığımı unutmayın, bu nedenle bu gibi şeylere yapılan çağrıları getTimeStamp()ve getClassName()işe yarayacağını varsayıyorum . Ayrıca IOException, java.io.*sınıflardan herhangi birini kullanırken fırlatılabilecek olasılıkla bir şeyler yapmalısınız - dosyaları yazan işleviniz bu istisnayı atmalı (ve başka bir yerde ele alınmalıdır) ya da bunu doğrudan yöntemde yapmalısınız. Ayrıca, bunun idbir tür olduğunu varsaydım String- kodunuz açıkça tanımlamadığından bilmiyorum. An gibi başka bir şeyse, benim burada yaptığım gibi fileName içinde kullanmadan önce intmuhtemelen onu bir a Stringçevirmelisiniz.
Ayrıca, appendaramalarınızı uygun gördüğüm şekilde concatveya ile değiştirdim +.
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);
}
}
Kodu Microsoft Windows'ta çalıştırmak istiyorsanız muhtemelen bu gibi çıplak yol adlarını kullanmamalısınız - /dosya adlarında bunun ne işe yarayacağından emin değilim . Tam taşınabilirlik için, yollarınızı oluşturmak için muhtemelen File.separator gibi bir şey kullanmalısınız .
Düzenleme : Aşağıdaki JosefScript tarafından yapılan bir yoruma göre , dizin varlığını test etmek gerekli değildir. directory.mkdir() Çağrı dönecektir truebir dizin oluşturduk ve eğer falsedizin zaten var olan durumda da dahil olmak üzere, bu yaptığı değilse.