Tôi đang cố gắng để thực hiện các hoạt động sau đây trong Java và không chắc chắn như thế nào:cách tạo tệp trong Java chỉ khi một tệp chưa tồn tại?
/*
* write data (Data is defined in my package)
* to a file only if it does not exist, return success
*/
boolean writeData(File f, Data d)
{
FileOutputStream fos = null;
try
{
fos = atomicCreateFile(f);
if (fos != null)
{
/* write data here */
return true;
}
else
{
return false;
}
}
finally
{
fos.close(); // needs to be wrapped in an exception block
}
}
Có một chức năng mà đã tồn tại mà tôi có thể sử dụng cho atomicCreateFile()
?
chỉnh sửa: Uh oh, tôi không chắc File.createNewFile() có đủ cho nhu cầu của tôi hay không. Nếu tôi gọi f.createNewFile()
và sau đó giữa thời gian trả lại và tôi mở tệp để ghi, ai đó đã xóa tệp đó? Có cách nào tôi có thể tạo cả tập tin và mở nó để viết + khóa nó, tất cả trong một ngã swoop? Tôi có cần phải lo lắng về điều này?
doh! làm thế nào tôi đã bỏ lỡ điều đó? :/ cảm ơn. Tâm trí của tôi ở trong đất C++. –
đã cập nhật câu trả lời của tôi dựa trên chỉnh sửa của bạn –
ok, cảm ơn. Có vẻ như tôi phải suy nghĩ cẩn thận về những điều kiện đặc biệt. (ví dụ.nếu createNewFile() thành công nhưng mở một kênh tập tin và nhận được một khóa tập tin không thành công) –