Linux 中用C++向当前用户目录下的.ds文件夹写入abc.txt,如果.ds文件夹不存在,则先创建目录
时间: 2024-03-27 16:40:10 浏览: 107
通过C++编程实现文件的创建
您可以使用 C++ 的文件流来实现向当前用户目录下的 `.ds` 文件夹写入 `abc.txt` 文件,如果 `.ds` 文件夹不存在,则先创建该目录。示例代码如下:
```c++
#include <fstream>
#include <iostream>
#include <unistd.h> // 获取当前用户目录
#include <sys/stat.h> // 创建目录
#include <sys/types.h>
using namespace std;
int main() {
string homedir = getenv("HOME"); // 获取当前用户目录
string dirpath = homedir + "/.ds"; // 目录路径
string filepath = dirpath + "/abc.txt"; // 文件路径
// 创建目录
if (mkdir(dirpath.c_str(), 0700) == -1 && errno != EEXIST) {
cerr << "创建目录失败!" << endl;
return 1;
}
// 打开文件
ofstream outfile(filepath);
if (outfile) { // 判断文件是否成功打开
outfile << "Hello, world!";
outfile.close(); // 关闭文件
cout << "写入成功!" << endl;
} else {
cout << "打开文件失败!" << endl;
}
return 0;
}
```
在上述代码中,我们首先使用 `getenv("HOME")` 函数获取当前用户目录,然后拼接目录路径和文件路径,其中 `.ds` 文件夹前面的 `.` 表示该目录为隐藏目录。接着,我们使用 `mkdir` 函数创建目录,如果创建失败就输出错误信息并退出程序。需要注意的是,如果 `.ds` 文件夹已经存在,`mkdir` 函数会返回错误码 `EEXIST`,此时不会输出错误信息。最后,我们使用文件流打开文件,如果成功就写入字符串并关闭文件,否则就输出错误信息。
在使用 `mkdir` 函数创建目录时,我们将权限设置为 `0700`,这表示只有当前用户有读、写、执行权限,其他用户没有访问权限。如果您想要让其他用户也有访问权限,可以将权限设置为 `0777`。但是需要注意的是,为了保护您的数据安全,不建议将权限设置为 `0777`。
阅读全文