boostremoveall文件不存在时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了boostremoveall文件不存在时相关的知识,希望对你有一定的参考价值。

boostremoveall文件不存在时设置chmod。日志确认,在调用boost::remove_all 的地方打日志, 发现文件和目录都删了一遍,可能是文件重复创建了,因为此时文件的ctime 很新, 排查了所有文件处理函数,都没有可能出现创建的效果,那就是remove_all 的问题remove_all 删除目录时,会先迭代删除子目录和文件, 最后删除本身目录, 而多线程下,有子目录被其它线程删的时候, remove_all 异常退出, 不再继续删除, 这导致了目录遗留的情况。 至于文件目录ctime问题,是由于设置权限chmod 时, 会更新ctime。所以,boostremoveall文件不存在时设置chmod。 参考技术A 如果文件不存在,则可以尝试在系统中搜索该文件,以确保它不存在。如果搜索结果显示文件不存在,则可以尝试使用Windows自带的“添加/删除程序”工具来卸载Boost中的所有组件,或者使用系统的软件卸载工具。

C++ ifstream 在不存在文件时工作,如果存在文件则不工作

【中文标题】C++ ifstream 在不存在文件时工作,如果存在文件则不工作【英文标题】:C++ ifstream working when not existing file and not working if existing file 【发布时间】:2016-03-21 15:11:53 【问题描述】:

我写了一个代码,它运行完美。但是1周后我再次打开它,我遇到了一个非常有趣的问题,所以这里是:

ifstream file;
file.open("bemenet.txt");

int i = -1;

while (i < SOR)

    i++;
    file >> termekek[i].termek;
    file >> termekek[i].ara;
    file >> termekek[i].darab;




file.close();

在这种情况下bemenet.txt 存在,程序已编译,当我尝试运行时:我得到错误代码:0xC0000005

另一种情况是bemenet2.txt 不存在,程序已编译并可以运行,但是当我想查看我从文件中获得的数据时,它运行到无限循环。

你能帮帮我吗?我不知道该怎么办...

【问题讨论】:

嗯,termemek 是怎么声明的?我敢打赌你那里有一个数组溢出...... struct TERMEKEK string termek;整合阿拉;内达拉布; ; TERMEKEK termekek[SOR]; 我知道...这不是最好的命名...但是当我编写程序时它可以工作.. 没有测试成功读取甚至成功打开文件。 i 在使用前递增,允许缓冲区轻松溢出。 当我运行 bemenet.txt(文件存在)时,我运行程序时出现错误代码,但对于 bemenet2.txt(不存在)它运行的程序出现菜单(我写了菜单) @user4581301 启动程序时立即出现错误代码 【参考方案1】:

我会选择这样的:

ifstream file;
file.open("bemenet.txt");

TERMEK t ;
std::vector<TERMEK > termekek ;

while (file >> t.termek >> t.ara >> t.darab  )
    termekek.push_back(t) ;

【讨论】:

vector 是更好的解决方案。不知道为什么我没有提到它。我可以说服你把括号放在 while 循环体周围吗? 你不需要 brtaces,但它们没有害处,并且使代码更清晰【参考方案2】:
ifstream file;
file.open("bemenet.txt");

int i = 0;

while ((i < SOR) && file >> termekek[i].termek >> termekek[i].ara >> termekek[i].darab  )

    i++;


file.close();

while (file &gt;&gt; termekek[i].termek &gt;&gt; termekek[i].ara &gt;&gt; termekek[i].darab) 将测试您关心的几乎所有 IO 和转换条件——打开失败、文件结束、数据转换失败、各种 IO 读取错误——感谢iostream 的布尔运算符和@987654324 @ 防止溢出。注意i 现在在读取之后和下一次测试之前递增,消除了允许i 超过SOR 的错误的可能性。

【讨论】:

如果您的编码标准或作业允许,请认真考虑 marom 对向量的建议。它减少了很多错误的可能性。 可能你是对的,但是明天我需要给老师做演示,所以我没有足够的时间重写所有代码......我写了一个类似自动售货机的程序,你可以购买,你可以进入管理员模式,你有很多统计数据......

以上是关于boostremoveall文件不存在时的主要内容,如果未能解决你的问题,请参考以下文章

导入 Access 时不存在文本文件规范

服务器上存在文件时不显示按钮

openBinaryFile:使用 shellcheck 时不存在(没有这样的文件或目录)

您的 WSGIPath 引用了在 AWS Elastic Beanstalk 中上传烧瓶应用程序时不存在的文件

为啥用户单击通知时不存在 userInfo?

Oracle ORA-00942:表或视图存在时不存在 [重复]