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 文件的主要内容,如果未能解决你的问题,请参考以下文章

结对编程——词频统计 2

作业四:结对编程

Lambda 上 PyMSQL + SQLAlchemy 中的幻象查询

UIScrollView 幻象子视图

黑苹果双系统mac系统下显示winds硬盘。。里面没东西咋办

windows中的txt文件上传到linux中,打开出现中文乱码