我试图移动(删除)一个文件到垃圾桶(在Linux中)使用c++(也使用QT4 GUI)。不幸的是,这似乎很难做到这一点,据我所知,没有一个统一的API。
我希望我的应用程序不仅可以在KDE上运行,还可以在GNOME, Xfce和其他Linux桌面环境上运行。这就是为什么我在寻找一种更通用的方法。
目前为止我能找到的最好的是:
- send2trash -但这是使用Python/QT4而不是c++/QT4
- trash-cli——它的缺点是它是一个独立的命令行程序,而不是一个库
对于任何需要尽可能少的特定于桌面环境的代码的方法,我都很高兴。或者换句话说,它尽可能独立于KDE/GNOME/Xfce组件。
如果有任何帮助,我将不胜感激。
为什么不找到一个终端命令来移动文件,然后调用system()在你的c++程序中为你运行它呢?
这个可能(我还没有测试过)是Linux中通过终端将文件移动到回收站的一个可能的一行代码。您只需将命令作为带引号的字符串传递给system()
,并在c++实现中调用它。
答案在
http://www.freedesktop.org/wiki/Specifications/trash-spec每个用户必须有一个"家庭垃圾"目录。它的名称和位置是$XDG_DATA_HOME/Trash
你只需要写c++代码把你的文件移到这个目录下。
您可以使用boost文件系统移动文件,也可以使用cstlib getenv检索XDG_DATA_HOME值。
据我所知,Linux中首先没有标准的垃圾桶。