编程语言
首页 > 编程语言> > javascript – GJS同步读取文件

javascript – GJS同步读取文件

作者:互联网

我正在尝试更准确地使用GJS
以同步方式读取文本文件.
这是一个用于文件读取的异步函数的示例

gio-cat.js
我找到了如何使用下一个函数继续种子:

function readFile(filename) {
    print(filename);
    var input_file = gio.file_new_for_path(filename);
    var fstream = input_file.read();
    var dstream = new gio.DataInputStream.c_new(fstream);
    var data = dstream.read_until("", 0);
    fstream.close();
    return data;
}

但不幸的是,它不适用于GJS.
谁能帮我 ?

解决方法:

当我使用GJS开发Cinnamon applet时,我曾经使用get_file_contents_utf8_sync函数来读取文本文件:

const Cinnamon = imports.gi.Cinnamon;

let fileContent = Cinnamon.get_file_contents_utf8_sync("file path");

如果您安装了肉桂并且您同意使用它,它会回答您的问题.
否则这里是get_file_contents_utf8_sync函数的C代码,希望这可以帮助你:

char * cinnamon_get_file_contents_utf8_sync (const char *path, GError **error)
{
  char *contents;
  gsize len;
  if (!g_file_get_contents (path, &contents, &len, error))
    return NULL;
  if (!g_utf8_validate (contents, len, NULL))
    {
      g_free (contents);
      g_set_error (error,
                   G_IO_ERROR,
                   G_IO_ERROR_FAILED,
                   "File %s contains invalid UTF-8",
                   path);
      return NULL;
    }
  return contents;
}

Cinnamon source code

标签:javascript,file-io,synchronous,gjs
来源: https://codeday.me/bug/20190703/1370360.html