Windows 中的幻象 \.txt 文件
Posted
技术标签:
【中文标题】Windows 中的幻象 \\.txt 文件【英文标题】:Phantom \.txt file in windowsWindows 中的幻象 \.txt 文件 【发布时间】:2021-09-30 15:32:35 【问题描述】:似乎可以在 Windows 中创建一个可以读取的文件\.txt
,但我无法以任何其他方式访问它或查看它是否存在。这似乎只适用于\.txt
,因为我无法创建其他带有反斜杠的文件,例如a\.txt
string filename = "\\.txt";
// make file
ofstream writer(filename);
writer << "This file exists" << endl;
writer.close();
// read file
ifstream reader(filename);
string line;
getline(reader, line);
cout << line << endl;
reader.close();
当我在 bash 中使用 ls -lia
时,这个文件根本不显示,但上面的程序可以很好地读取它(我可以删除创建文件的部分并稍后运行它,因此文件确实存在),这是如何工作的?
【问题讨论】:
"带有反斜杠的文件" - Windows 中的文件名中没有反斜杠。 【参考方案1】:在 Windows 上,ofstream writer("\\.txt")
在当前驱动器的根目录中创建一个名为 .txt
的文件。这是一个完全有效的文件名。
ofstream writer("a\\.txt")
尝试在当前目录的a
子目录中创建一个名为.txt
的文件。 a
目录必须存在才能成功。很可能它不存在,因此它对你来说是失败的。
要创建目录,您可以使用mkdir
函数(它与其他操作系统存在兼容性问题,因为Windows 不兼容POSIX),或CreateDirectory
WINAPI 函数,这是Windows 特定的。调用CreateDirectoryA("a")
后,"a\\.txt"
路径应该可以工作了。
【讨论】:
创建目录的平台特定版本的替代方法是使用标准std::filesystem::create_directory
函数(如果可以使用 C++17 或更高版本)。以上是关于Windows 中的幻象 \.txt 文件的主要内容,如果未能解决你的问题,请参考以下文章
Lambda 上 PyMSQL + SQLAlchemy 中的幻象查询