L'Isola di Niente
L'Isola di Niente » Gjs Tips » GFile

GFile

# 最終更新日 2018.01.01

URI から読み込む
#!/usr/bin/gjs

/*
 * afp:// や dav:// 等でアクセス可能な URI なら読み込み可能
 * 「こんにちは sasakima-nao です」と表示できたら成功
**/

const Gio = imports.gi.Gio;

let uri = Gio.file_new_for_uri("http://palepoli.skr.jp/tips/gjs/test.dat");
let [ok, contents, etag_out] = uri.load_contents(null);
if (ok)
    print(contents.toString());
else
    print("アクセスできません");

ファイルの詳細を得る
ES6 に書き換え
#!/usr/bin/gjs

const Gio = imports.gi.Gio;
const System = imports.system;
 
// 自身の詳細
let f = Gio.file_new_for_path(System.programInvocationName);
// GFileInfo の引数に得たい項目をコンマ区切りで指定
let info = f.query_info(
    "standard::name,standard::content-type,standard::size",
    Gio.FileQueryInfoFlags.NONE,
    null
);
// 取得
let _name = info.get_name();
let _size = info.get_size();
let _type = info.get_content_type();
let _desc = Gio.content_type_get_description(_type);
// 出力
print(`----------
Name        : ${_name}
Size        : ${_size} byte
Content Type: ${_type}
Description : ${_desc}
----------`);
 
/* output
----------
Name        : info.js
Size        : 815 byte
Content Type: application/javascript
Description : JavaScript プログラム
----------
*/

ディレクトリ内容列挙
#!/usr/bin/gjs

/*
 * ディレクトリや隠しファイルも関係なく取得されます
 * standard::* 指定しないと GFileInfo から確認できませんので注意
**/

const Gio = imports.gi.Gio;
 
let gFile = Gio.file_new_for_path("/home/sasakima-nao");
let fileEnumerator = gFile.enumerate_children(
    "standard::type,standard::is-hidden,standard::is-backup",
    Gio.FileQueryInfoFlags.NONE,
    null
);
for (;;) {
    let info = fileEnumerator.next_file(null);
    if (info == null) break;
    if (info.get_is_hidden()) continue;
    if (info.get_is_backup()) continue;
    if (info.get_file_type() == Gio.FileType.DIRECTORY) continue;
    print(info.get_name());
}

コピー、移動、ゴミ箱
#!/usr/bin/gjs

/*
 * first.txt というファイルを作成してから試してください
 * move.txt が残り copy.txt がゴミ箱にあれば成功
**/

const Gio = imports.gi.Gio;

let f = Gio.file_new_for_path("first.txt");
if (f.query_exists(null)) {
    // Copy
    let c = Gio.file_new_for_path("copy.txt");
    f.copy(c, Gio.FileCopyFlags.NONE, null, null);
    // Move
    let m = Gio.file_new_for_path("move.txt");
    f.move(m, Gio.FileCopyFlags.NONE, null, null);
    // Trash
    c.trash(null);
}

Copyright(C) sasakima-nao All rights reserved 2002 --- 2018.