【问题标题】:deleting file in ntfs using c使用c删除ntfs中的文件
【发布时间】:2011-03-09 14:22:31
【问题描述】:

如何删除 ntfs 驱动器上的文件?我尝试了删除文件并删除,但都没有奏效。有什么建议吗?

do { 
  char* nPtr = new char [lstrlen( data.cFileName ) + 1]; 

  for( int i = 0; i < lstrlen( data.cFileName ); i++ ) 
    nPtr[i] = char( data.cFileName[i] ); 

  nPtr[lstrlen( data.cFileName )] = '\0'; 

  if(!strcmp(nPtr , fn)) 
    remove(nPtr); 

  cout << nPtr << endl; 
}

谢谢你

【问题讨论】:

  • 什么“没用”?你收到错误了吗?你检查错误是什么意思了吗?
  • 你能告诉我们你试过的代码吗?
  • DeleteFile 在 Windows 上是正确的。它确实有效,但你做错了什么。你有错误信息吗?行为与您想要的有何不同?
  • 呃,我在您发布的代码中没有看到您调用DeleteFile 函数的任何地方。我在这里错过了什么?
  • @Algorithmist:否决按钮的工具提示显示“这个问题不清楚或没有用”。我认为这两者兼而有之。原版甚至没有发布已尝试过的代码,但它抱怨某些代码不起作用。没有详细说明如何它不起作用,并且该问题不可重现。当按下示例代码时,该问题仍然无法重现,因为它甚至不包括对所谓“不起作用”的函数的调用。我们仍然不知道“不起作用”是什么意思,并且 OP 拒绝尝试自行排除故障。

标签: c winapi


【解决方案1】:

DeleteFile() 的调用确实有效,在您的情况下它确实有效。

DeleteFile() 约定删除您指定的文件(如果可以删除)。如果文件可以被删除,那么它会被删除。如果文件无法删除,则不会删除。

如果DeleteFile() 返回false,文档中提到的失败,那么文件没有被删除,这是有充分理由的。您可以致电GetLastError() 了解文件未被删除的原因。

【讨论】:

    【解决方案2】:

    “没有工作”可能是因为参数错误(路径指定不正确)或者因为您没有删除文件的权限或因为文件正在使用中。这些原因的解决方法不同。您可以通过检查 DeleteFile() 是否返回 false 然后调用 GetLastError() 函数来获取错误代码来检查实际问题是什么。 错误代码:

    2 - 未找到文件 3 - 找不到路径 5 - 访问被拒绝 87 - 无效参数

    【讨论】:

    • 我在谷歌搜索,发现我无法使用这些命令删除 ntfs 文件系统中的文件
    • @Nobody:那篇文章提供了一些您可能无法使用DeleteFile 命令删除 NTFS 分区上的文件的原因。它并不是说您不能永远删除这样的文件。通常,您可以。通过检查错误代码(使用GetLastError),您可以确定您是否遇到了其中一种无法正常工作的罕见情况。
    • @all 谁能解释我为什么在我投赞成票之前投了 -3 票。@没有人没有问过整个代码或没有问过一个模糊的问题,那么为什么要投反对票?。 stackoverflow 中的用户用于对问题/答案投反对票。我已经有大约 1 个月的时间了(尽管我是自 5 个月以来的成员),但我看到没有任何充分理由的投反对票。并且还对那些得分较高的用户提出的问题表示支持而忽略天真的用户的问题。我不想要一个明确的答案。我知道这会被报告为垃圾邮件或者也会被否决。
    • @Algorithmist 提出问题的人应该至少自己解决问题。好的问题包含 80% 的答案。所以写一个好问题也是一项有价值的工作。如果有人问“它不起作用——为什么”——这里没有神谕可以根据骨折或类似的东西给出答案。至少应该存在错误描述。
    • @Algorithmist:这应该是对问题的评论,而不是对这个答案的评论。顺便说一句,更有经验的用户会得到更多的支持,因为他们写的答案更好;呵呵。
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 2016-01-09
    • 1970-01-01
    • 2012-05-05
    • 2012-12-16
    • 2016-07-25
    • 1970-01-01
    • 2019-12-10
    相关资源
    最近更新 更多