【问题标题】:Is there a java library / package analogous to <stdio.h>?是否有类似于 <stdio.h> 的 java 库/包?
【发布时间】:2010-05-13 01:44:09
【问题描述】:

我已经断断续续地使用 Java 大约 14 年了,在过去 6 年左右的时间里几乎没有其他任何事情。

我真的很讨厌 java.io 包——它的大量子类和适配器。我确实喜欢异常,而不必总是轮询“errno”之类的东西,但我肯定可以在没有声明的异常的情况下生活。

有什么功能类似于 C 中的 Unix/ANSI stdio.h 例程吗?

我知道,在 java 本身退役之前,我们永远不会摆脱 java.io 及其约定,因为它们已经转移到了许多已加入 java 的框架中。也就是说,我想要一些类似这样的东西(我们称之为包 javax.stdio):

有一个主要的实用程序类,可能是 FileStar,它可以读取和写入文件(或管道),无论是文本还是二进制,顺序或随机访问,其构造函数模仿 fopen() 和 popen()。

这个类应该有很多有用的方法,这些方法可以执行 fread()、fwrite()、fgets()、fputs()、fseek() 和其他任何事情(fprintf()?)。与 open/construct 模式不兼容的方法会简单地抛出(就像某些集合类/方法在受限时所做的那样)。

然后,有一堆接口建议您在创建流后打算如何使用它:Sequential、RandomAccess、ReadOnly、WriteOnly、Text、Binary,以及这些有意义的组合。甚至可能有返回适当类型转换(接口)的方法,如果您要求一些不兼容的东西,就会抛出。

为了更有趣,请跳过声明的异常——例如- javax.stdio.IOException 扩展了 RuntimeException。

有这样的开源项目吗?

【问题讨论】:

标签: java stdio java-io


【解决方案1】:

Java IO 库不是最好的,但您基本上应该接受它。 C 中的 C 代码。Java 中的 Java 代码。 Java IO 类相当简单,如果不是有点冗长的话。

您也可以使用 Java NIO 包,但它们往往有更专业的用例。

【讨论】:

    【解决方案2】:

    您是否研究过 java.nio 和 java.nio.file(在 Java 7 中)包?

    【讨论】:

    • 从我对 NIO 的了解来看,它似乎面向更复杂的东西,例如轮询多个通道并选择具有当前活动的一个线程来执行操作。但是,我可能会遗漏一些东西。
    【解决方案3】:

    据我所知,没有什么能像 Java 的 stdio 那样直接。而且我认为它不会在纯 Java 中实现。

    实际上,我想您会发现大多数具有 C 背景的经验丰富的 Java 开发人员认为 Java I/O 是对 C stdio 的巨大改进。尤其是现在 Java 有 printf 和 scanf 的类似物。

    【讨论】:

    • 有异常而不是记住检查错误代码和魔术返回值的改进。不必嵌套 3 个构造函数来打开和读取文本文件。恕我直言,拥有 1 个“接口”(FILE *)和 2 个“工厂方法”(fopen() 和 popen())比拥有(从 Java 1.5 开始)12 个接口和 49 个类(不确定有多少49 是具体的)。
    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 2011-01-08
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多