输出可执行文件名统一为filetool; 要求可提供菜单让用户选择可以的操作,包括: i.创建文件 ii.写文件 iii.读文件 iv.修改文件权限(chmod,读、写、执行),可修改为的权限包括: 0700 0400 0200 0100 v.查看当前文件权限 vi.退出
时间: 2023-06-24 21:04:07 浏览: 242
好的,以下是一个简单的实现,可以根据需要进行修改和完善。
```c++
#include <iostream>
#include <fstream>
#include <sys/stat.h>
#include <unistd.h>
using namespace std;
// 创建文件
void createFile() {
string filename;
cout << "请输入文件名:";
cin >> filename;
ofstream fout(filename);
fout.close();
cout << "文件创建成功!" << endl;
}
// 写文件
void writeFile() {
string filename;
cout << "请输入文件名:";
cin >> filename;
ofstream fout(filename, ios::app);
if (!fout.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
cout << "请输入要写入的内容(以EOF结束):" << endl;
char ch;
while (cin.get(ch)) {
if (ch == EOF) break;
fout.put(ch);
}
fout.close();
cout << "文件写入成功!" << endl;
}
// 读文件
void readFile() {
string filename;
cout << "请输入文件名:";
cin >> filename;
ifstream fin(filename);
if (!fin.is_open()) {
cout << "文件打开失败!" << endl;
return;
}
cout << "文件内容如下:" << endl;
char ch;
while (fin.get(ch)) {
cout.put(ch);
}
fin.close();
}
// 修改文件权限
void changePermission() {
string filename;
cout << "请输入文件名:";
cin >> filename;
string perm;
cout << "请输入要修改的权限(如0700、0400、0200、0100):";
cin >> perm;
int mode = stoi(perm, 0, 8);
int ret = chmod(filename.c_str(), mode);
if (ret == -1) {
cout << "文件权限修改失败!" << endl;
return;
}
cout << "文件权限修改成功!" << endl;
}
// 查看当前文件权限
void viewPermission() {
string filename;
cout << "请输入文件名:";
cin >> filename;
struct stat st;
int ret = stat(filename.c_str(), &st);
if (ret == -1) {
cout << "文件打开失败!" << endl;
return;
}
cout << "文件权限为:" << oct << (st.st_mode & 0777) << endl;
}
int main() {
int choice;
while (true) {
cout << "请选择操作:" << endl;
cout << "1.创建文件" << endl;
cout << "2.写文件" << endl;
cout << "3.读文件" << endl;
cout << "4.修改文件权限" << endl;
cout << "5.查看当前文件权限" << endl;
cout << "6.退出" << endl;
cout << ">>> ";
cin >> choice;
switch (choice) {
case 1:
createFile();
break;
case 2:
writeFile();
break;
case 3:
readFile();
break;
case 4:
changePermission();
break;
case 5:
viewPermission();
break;
case 6:
return 0;
default:
cout << "无效的选项!" << endl;
break;
}
cout << endl;
}
}
```
注意:该代码只在 Linux 环境下测试过,对于 Windows 等其他操作系统可能需要进行相应的修改。
阅读全文