我需要在文件中使用VC ++ MFC应用程序保存文本信息,使其成为只读文件。 到目前为止,我已经考虑了两种选择,但我对这两种选择都不满意
1)我可以将文件保存为pdf。但是我看过的几个pdf库似乎都有一个陡峭的学习曲线。
2)将文件压缩到存档中,甚至密码保护它。但是,这仍然不能使它成为只读。对于压缩,我找到了这个很棒的库 - http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
请你建议我采用更好的方法。
FWIW,我在Visual Studio 2013上,所以我可以使用C ++ 11。另外,我将Boost链接到我的代码中。
答案 0 :(得分:2)
您可以使用boost::filesystem
通过以下功能完成此操作:
void permissions(const path& p, perms prms);
path
可以用字符串构造,所以没问题。困难的部分是perms
,它是一种位掩码。您需要在该位掩码中使用remove_perms
来表示应删除权限。
以下代码应该有效(未经测试):
using boost::filesystem::perms;
boost::filesystem::path myPath("foo.txt");
boost::filesystem::permissions(myPath,
perms::remove_perms|perms::owner_write|perms::others_write|perms::group_write);
答案 1 :(得分:1)
您也可以这样做:
ofstream out;
out.open("test.txt");
out.close();
//attrib [parameters] [file]
//+R -> readonly
//+H -> hidden
//+S -> system file (ultra hidden)
//There are more, type 'attrib /?' in cmd to find all of the options
system("attrib +R test.txt");
就是这样!如果您有任何问题,请告诉我。
修改强>
这仅适用于Windows,因为它使用直接控制台命令。
答案 2 :(得分:0)
我会使用以下代码:
HANDLE hFile = CreateFile(L“read_only_file.txt”,GENERIC_ALL,0,NULL,FILE_SHARE_WRITE,FILE_ATTRIBUTE_READONLY,NULL);