有没有办法在 Ruby 中读取不同的文件类型? [关闭]

Posted

技术标签:

【中文标题】有没有办法在 Ruby 中读取不同的文件类型? [关闭]【英文标题】:Is there a way to read different file types in Ruby? [closed] 【发布时间】:2021-08-29 22:06:50 【问题描述】:

我正在做一个编码练习,我需要从 Ruby 中的 JSON 文件读取和解析,但是它要求我应该保持解决方案的开放性,以防将来使用其他文件类型。我目前已经专门为 JSON 编写了它,但我想不出一种方法来满足其他文件类型而不使用正则表达式 - 这可能又是文件类型特定的,因为我正在寻找数据以特定方式格式化。

有没有人对我如何做到这一点以适用于多种不同的文件类型有任何想法?

    json_from_file = File.read("test.json")
    hash = JSON.parse(json_from_file)

【问题讨论】:

您可以尝试使用 ***.com/questions/4600679/… 之类的令人生畏的方法来识别文件类型,然后在此基础上使用 case 这个问题太宽泛了。有太多可能的设计,并且没有任何限制可以帮助选择一个。工厂、策略、解析器框架,它们都可以以某种方式、形状或形式……或完全不同的东西使用。 了解工厂和战略模式。简而言之,您可能希望对不同的文件类型使用不同的处理程序,并且可能是默认的处理程序,它只会按原样读取文件而不进行任何解析。 【参考方案1】:

我估计他们希望看到的是你有一个类来读取文件,而另一个类来解析 JSON。

通过分离关注点,您可以重用阅读器,但在必须处理不同文件类型时使用另一个解析器类。

为什么我说类而不是方法?首先,这个问题感觉像是一个练习。其次,当您确实希望进行适当的错误处理时,读取和解析实际上比一行代码要多。

【讨论】:

以上是关于有没有办法在 Ruby 中读取不同的文件类型? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中读取文件的第一行

读取镶木地板文件时,有没有办法在 basePath 中使用通配符?

用php读取pdf文件

如何在python中动态地读取用空格分隔的输入,最好是在List上读取不同类型的数据?

使用 Ruby 逐行读取、编辑和写入文本文件

ruby读取csv文件数据