2
我有以下代碼打開一個流並寫入它,然後刪除它,再次試圖寫它。 有沒有辦法讓fstream的對象得到通知不存在的文件,並重新創建文件(我知道我可以使用stat來檢查,但我不知道是否有在流對象本身的狀態變化)底層文件未鏈接時,fstream對象會發生什麼變化?
#include <iostream> // std::cout
#include <fstream> // std::fstream
#include <unistd.h>
#include <sys/stat.h>
int main() {
std::fstream fs;
fs.open ("test.txt",std::fstream::out);
if (fs.is_open())
{
fs << "lorem ipsum";
std::cout << "Operation successfully performed\n";
std::cout<<fs.fail()<<std::endl;
unlink("test.txt");
fs << "more lorem ipsum";
fs.write("hi",2);
fs.write("hi",2);
fs.write("hi",2);
fs.write("hi",2);
fs.write("hi",2);
std::cout<<fs.fail()<<std::endl;
fs.close();
}
else
{
std::cout << "Error opening file";
}
return 0;
}
我已嘗試
is_open()
good()
這實際上是在Unix系統上發生的一件可悲的事 –
@PaulStelian這實際上是'名字沒有文件:文件有名字'[Dennis Ritchie,或者可能是Ken Thompson,* c。* 1974]的結果。 – EJP
有很好的報價!這就是說,*是*有辦法做OP的想法? (如果缺失,以可靠的方式重新創建文件) –