【发布时间】:2012-05-21 23:38:27
【问题描述】:
我为该问题实现了一个解决方案,旨在跨平台并遵循 C++ 标准库。
bool isdir(const char *string) {
ofstream file(string, ios::out);
return file.fail();
}
然而,如果文件实际上是可写的,程序会在其工作目录中打开一个名称为string 的空文件。
我怎样才能防止这种情况发生?
【问题讨论】:
-
您可能应该使用操作系统特定的功能来实现它。您可以将其以只读方式打开,但这也行不通。如果路径是一个没有读取权限的文件,你的算法将表明它是一个目录。
-
@Stencil 没有。 C++ 标准不了解文件系统。
-
如果你想要可移植性,boost::filesystem 可能是最好的。
-
请注意,
file永远不会成为NULL。你可以用is_open检查文件是否打开。
标签: c++