以字符串形式读取整个文件内容

exebook

您如何将整个文件内容读入Genie中的字符串变量中?

(我在文档中找不到任何内容。这些文档似乎也分散且不完整。)

阿尔托马斯

Genie语言本身没有内置的文件输入/输出。您将需要使用一个库,这就是为什么在很多地方提供文档的部分原因。有很多选择!

通常,GLib库是此类低级功能的良好起点Genie在其类型系统中大量使用了GLib,并且默认情况下包括到GLib库的绑定。因此,这是使用GLib的FileUtils的示例

[indent=4]
init
    var filename = "test.txt"
    file_loaded:bool = false
    contents_of_file:string
    try
         file_loaded = FileUtils.get_contents( filename, out contents_of_file )
    except error:FileError
        print( error.message )
    if file_loaded
         print( @"Contents of $filename:

$contents_of_file")

编译:

valac fileutils_example.gs

这个例子利用了Genie的:

  • varkeywod进行类型推断
  • 一个out参数contents_of_file
  • 通过contents_of_filetry...except声明来确定规则
  • 字符串模板,@""用于调用变量to_string()方法语法

GLib库包含一个附加组件GIO,它提供异步输入/输出和基于流的API。下一个示例是一个非常基本的示例,与上面的操作相同,但是使用了GIO接口:

[indent=4]
init
    var file = File.new_for_path( "test.txt" )
    file_loaded:bool = false
    contents_of_file:array of uint8
    try
        file_loaded = file.load_contents( null, out contents_of_file, null )
    except error:Error
        print( error.message )
    if file_loaded
        text:string = (string)contents_of_file
        print( @"Contents of $(file.get_basename()):

$text")

编译:

valac --pkg gio-2.0 -X -w fileinputstream_example.gs

注意事项:

  • --pkg gio-2.0使用GIO库,--pkg glib-2.0在前面的示例中不需要,因为默认情况下已完成
  • contents_of_file:array of uint8是一个缓冲区和一个out参数load_contents ()
  • -X -w选项可valac禁止在guint8期望时从C编译器传递警告char
  • 缓冲区需要转换为字符串: (string)contents_of_file
  • 如果您使用GLib.Mainloop或派生循环,则可以让GIO在后台线程中加载文件:file_loaded = yield file.load_contents_async( null, out contents_of_file, null )
  • 如果要写一个到库的绑定点,null则可null以为参数指定默认值,以便它们成为可选参数,但GIO绑定中未使用该技术。

最后,可能还有其他更适合您需求的库。例如,Posix.FILE是读取和写入文件的另一种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以字符串形式读取pdf的内容

如何从Java文件中以字符串形式读取XML内容

在Python中以字符串形式读取gz文件

在NodeJS中以字符串形式读取远程JS文件

在Servlet中以字符串形式获取文件内容

如何以纯字符串形式查看文件内容

如何编写文件内容的字符串表示形式?

从文件读取内容会产生空字符串

如何在不读取整个文件的情况下找到文件中字符串的长度

以字符串形式获取iframe内容

以字符串形式获取MimeMessage内容

如何使用C#将整个文件读取为字符串?

从文件 fgetc 读取的性能 vs fread 整个字符串

以字符串而不是逐字检索整个文件内容-Linux命令

将文本文件的内容读取到字符串时,字符无效

在Ruby中以字符串形式读取二进制文件

Rails 5在YAML文件中以字符串形式读取环境变量

R-以字符串形式读取CSV文件中的SPECIFIC,Single NUMERIC列

在C语言中以字符串形式读取文本文件的特定部分?

从文件到字典以浮点数而不是字符串的形式读取

从txt文件中以字符串形式读取后缀表达式

BufferedReader 没有读取整个字符串

scanf无法读取整个字符串

MATLAB - 以字符串数组的形式获取文件夹内容

如何使用xmlStreamReader以字符串形式获取XML文件的全部内容?

如何以字符串形式获取UNO共享项目的文件内容

列出所有包含(以名称,目录或内容的形式)特定(子)字符串的常规文件

在 RoR 中创建 CKAN 资源,以字符串形式提供文件内容

C从文件中读取字符串内容并比较相等性