2010-05-13 91 views
2

我一直在做关闭和约14年的Java,并在过去的6年左右几乎没有别的。是否有类似于<stdio.h>的java库/包?

我真的很讨厌java.io包 - 它的子类和适配器的军团。我想像例外,而不是总是轮询“errno”之类,但我可以肯定生活没有宣布的例外。

是否有任何功能像C/UNIX中的Unix/ANSI stdio.h例程?

我知道我们将永远不会摆脱java.io及其约定,直到java本身已经退役,因为它们已经转移到已经增加到java的许多框架中。也就是说,我希望有一种类似于此的东西(我们称之为package javax.stdio):

有一个主实用程序类FileStar,它可以读写文件(或管道),文本或二进制,无论是顺序或随机访问,与模仿fopen()和popen()的构造函数。 (),fwrite(),fgets(),fputs(),fseek()以及其他任何东西(fprintf()?)的有用方法的负载。与开放/构造模式不兼容的方法只是简单地抛出(就像一些集合类/方法受到限制时一样)。

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

如果您有额外的口味,请跳过声明的例外 - 例如 - javax.stdio.IOException扩展了RuntimeException。

是否有像这样的开源项目?

+1

您是否考虑过[Commons IO](http://commons.apache.org/io/)使IO代码不那么冗长?特别是名称中以'Utils'结尾的类。例如。 ['IOUtils'](http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html)和['FileUtils'](http://commons.apache.org /io/api-release/org/apache/commons/io/FileUtils.html)。 – BalusC 2010-05-13 02:32:02

+0

@BalusC:谢谢,不是我一直在寻找的东西,但有一些像这样的小宝石:http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils的.html#toByteArray%28java.io。读者%29) – Roboprog 2010-05-19 01:19:00

回答

4

Java IO库不是最好的,但你应该基本上忍受它。类似于C中的C代码,如Java中的Java代码。如果不是详细的话,Java IO类非常简单。

您也可以使用Java NIO软件包,但它们倾向于使用更多专用的用例。

0

据我所知,没有什么东西像Java的stdio一样。我不认为它可以在纯Java中实现。

实际上,我认为你会发现大多数经验丰富的Java开发人员在C背景下认为Java I/O是对C++ stdio的巨大改进。特别是现在Java有printf和scanf的类比。

+0

有例外,而不是记住检查错误代码和魔术返回值*是一种改进。不得不嵌套3个构造函数来打开和读取文本文件。拥有1个“接口”(FILE *)和2个“工厂方法”(fopen()和popen())比IMHA(拥有Java 1.5)更好,有12个接口和49个类(不确定有多少49具体)。 – Roboprog 2013-07-27 03:20:37

1

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

+0

从我看到的NIO看来,它似乎面向更复杂的东西,比如轮询多个通道并选择当前活动的线程来执行操作。但是,我可能会错过一些东西。 – Roboprog 2010-05-19 01:10:24

相关问题