1
我试图读取路径/var/cache/apt/archives
具有下列权限:如何使用Vala读取root拥有的文件夹?
drwxr-xr-x 3 root root 90112 ago 2 14:36 archives
而且我得到了以下错误:
ERROR: Error opening directory '/var/cache/apt/archives/partial': Permission denied
有人能帮我个忙?
的源代码如下:
using Gtk;
using GLib;
private int64[] get_folder_data (File file, string space = "", Cancellable? cancellable = null) throws Error
{
FileEnumerator enumerator = file.enumerate_children (
"standard::*",
FileQueryInfoFlags.NOFOLLOW_SYMLINKS,
cancellable);
int64 files = 0;
int64 size = 0;
int64[] data = new int64[2];
FileInfo info = null;
while (cancellable.is_cancelled() == false && ((info = enumerator.next_file (cancellable)) != null)) {
if (info.get_file_type() == FileType.DIRECTORY) {
File subdir = file.resolve_relative_path (info.get_name());
get_folder_data (subdir, space + " ", cancellable);
} else {
files += 1;//Sum Files
size += info.get_size();//Accumulates Size
}
}
if (cancellable.is_cancelled()) {
throw new IOError.CANCELLED ("Operation was cancelled");
}
data[0] = files;
data[1] = size;
stdout.printf ("APT CACHE SIZE: %s\n", files.to_string());
stdout.printf ("APT CACHE FILES: %s\n", size.to_string());
return data;
}
public static int main (string[] args) {
Gtk.init (ref args);
File APT_CACHE_PATH = File.new_for_path ("/var/cache/apt/archives");
try {
get_folder_data (APT_CACHE_PATH, "", new Cancellable());
} catch (Error e) {
stdout.printf ("ERROR: %s\n", e.message);
}
Gtk.main();
return 0;
}
而且我用的编译的命令如下:
valac --pkg gtk+-3.0 --pkg glib-2.0 --pkg gio-2.0 apt-cache.vala
谢谢老兄!你说的工作:) – lozanotux