我已经开了大约14年的Java,在过去的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。
这样的开源项目是否会浮动?
答案 0 :(得分:4)
Java IO库不是最好的,但你基本上应该忍受它。像C中的C代码。像Java中的Java代码。如果不是有点冗长,那么Java IO类就相当简单。
您也可以使用Java NIO包,但它们往往具有更专业的用例。
答案 1 :(得分:1)
您是否调查了java.nio和java.nio.file(在Java 7中)包?
答案 2 :(得分:0)
据我所知,没有像stdio for Java那样直接。而且我认为它不会在纯Java中实现。
实际上,我认为您会发现大多数经验丰富的具有C背景的Java开发人员认为Java I / O是对C stdio的巨大改进。特别是现在Java有printf和scanf的类比。