gpt4 book ai didi

clojure - Clojure 中的内存文件类型对象

转载 作者:行者123 更新时间:2023-12-02 00:09:48 25 4
gpt4 key购买 nike

我刚刚开始使用 Clojure,想调用一个 Java 方法,该方法将要读取的输入文件和要写入的输出文件作为参数。两者似乎都是 java.io.File 类型。我想调用的方法是这个类中的“parse”:

http://htmltolatex.sourceforge.net/javadoc/cz/kebrt/html2latex/Parser.html

但是,因为我会重复调用该方法,所以我更愿意使用内存中的对象而不是磁盘上的文件。

我已经成功加载了一个 Parser 类的实例:

(def my_parser (cz.kebrt.html2latex.Parser.))

我相信我已经成功地创建了一个内存中的类文件对象,可以使用这个命令从中读取:

(def input-object (java.io.StringBufferInputStream. "this is a test"))

但是,我应该传递什么样的对象文件来捕获输出? (为了完整起见,我应该提到这个输出文件首先用于构造 ParserHandler 的实例,然后将其传递给上面创建的解析器。http://htmltolatex.sourceforge.net/javadoc/cz/kebrt/html2latex/ParserHandler.html)

感谢您的任何建议。

最佳答案

我很确定这个(设计糟糕的)API 适用于旧版本的软件,它不允许您执行您想要执行的操作。 (即,您不能创建内容在内存中的 File。这不是该类的用途。)

latest version似乎有一个构造函数,您可以将 java.io.FileString 传递给该构造函数。后者应该是您所追求的。

编辑:我认为为您清理一些东西可能会很好,因为您似乎来自 Python 背景(考虑到您反复使用术语“类文件”)。 java.io.File 是一个误导性的名称。它实际上更像是一条路径。例如,如果您想检查文件是否存在,您可以执行 (.exists (java.io.File. "my/path"))File 也可以是目录。我知道这很愚蠢,但是,嘿,它是 java。 (如果您想了解更多信息,请查看 here )。这个 Parser 类真正应该提供的是传递 java.io.Reader 的能力,这就像字符序列的抽象 View 。在内部,他们将 String 选项和 File 选项都转换为 Reader,因此他们不只是接受阅读器的设计非常糟糕并去掉中间人。

关于clojure - Clojure 中的内存文件类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com