c++ i/o 锁定一个空文件
c++ i/o locks an empty file
我已经创建了一个函数来return一个文件的大小
int thFileClass::getFileSize (){
streampos begin,end;
ifstream myfile (m_szFile,std::ios::binary);
if (myfile.peek() != std::ifstream::traits_type::eof()){
if (myfile.is_open()){
begin = myfile.tellg();
myfile.seekg (0, myfile.end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end-begin) << " bytes.\n";
return end-begin;
}
} else {
myfile.close();
}
return 0;
}
但是如果文件是空的,它会锁定它。所以下次我要打开 read/write 的文件时,它不会打开
MyFile.is_open()==假;
知道为什么会这样或者我可以如何阻止文件锁定吗?
P.S。 myfile.close();总是在上面的函数中被调用。
更新
即使我的代码很简单,就像打开和关闭文件一样,它也会被锁定。
ifstream myfile (m_szFile,std::ios::binary);
myfile.close();
试试这个
int getFileSize() {
streampos begin, end;
ifstream myfile("1.txt");
if (myfile.peek() != std::ifstream::traits_type::eof()) {
if (myfile.is_open()) {
begin = myfile.tellg();
myfile.seekg(0, myfile.end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end - begin) << " bytes.\n";
}
}
myfile.close();
return end - begin;
}
我已经创建了一个函数来return一个文件的大小
int thFileClass::getFileSize (){
streampos begin,end;
ifstream myfile (m_szFile,std::ios::binary);
if (myfile.peek() != std::ifstream::traits_type::eof()){
if (myfile.is_open()){
begin = myfile.tellg();
myfile.seekg (0, myfile.end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end-begin) << " bytes.\n";
return end-begin;
}
} else {
myfile.close();
}
return 0;
}
但是如果文件是空的,它会锁定它。所以下次我要打开 read/write 的文件时,它不会打开 MyFile.is_open()==假;
知道为什么会这样或者我可以如何阻止文件锁定吗?
P.S。 myfile.close();总是在上面的函数中被调用。
更新
即使我的代码很简单,就像打开和关闭文件一样,它也会被锁定。
ifstream myfile (m_szFile,std::ios::binary);
myfile.close();
试试这个
int getFileSize() {
streampos begin, end;
ifstream myfile("1.txt");
if (myfile.peek() != std::ifstream::traits_type::eof()) {
if (myfile.is_open()) {
begin = myfile.tellg();
myfile.seekg(0, myfile.end);
end = myfile.tellg();
myfile.close();
cout << "size is: " << (end - begin) << " bytes.\n";
}
}
myfile.close();
return end - begin;
}