2010-05-13 47 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

相關問題