2012-07-29 69 views
1

我還是一位新手java程序員。我正在學習Java IO,並注意到在本書以及在線教程中,他們都沒有談論掃描儀類。他們總是提到,創建輸入/輸出流讀取器對象並將其用於讀取或寫入。瞭解Java IO

我對掃描儀類非常熟悉,閱讀後我開始認爲掃描儀不是讀取java中控制檯輸入/文件的正確方法。

請澄清我的疑問,如果你能指點我一個容易理解的教程,它會很好。我已經查閱了oracle文檔和其他熱門網站。閱讀赫伯特schildt的書&可怕的頭第一個Java書(barf..barf)

+0

如果我沒有記錯,Scanner最適合讀取人類可讀形式的輸入(例如,我想要System.in中的5個數字由用戶輸入,然後是一行文本,然後是兩行十進制數字)。 (糾正我,如果我錯了) – 2012-07-29 08:08:42

回答

0

掃描儀類是一個專門用於讀取文本文件的特殊文件讀取器。如果您想要讀取其他文件類型,掃描儀類不是最佳的。 一個很好的概述可以在這裏找到java i/o。總結表格有:

java.io包中包含許多類,您的程序可以用來讀寫數據。大多數類實現順序訪問流。順序訪問流可以分爲兩組:讀取和寫入字節的那些以及讀取和寫入Unicode字符的那些。每個順序訪問流都有一個特性,例如讀取或寫入文件,過濾數據作爲其讀取或寫入,或序列化對象。

看完這個之後,你應該看看Apache Commons I/O哪些給你一些方便的I/O實用程序類。

1

你明白,a)有關Java的很多材料是多年前寫的,而且Scanner是相對較新的。 b)在某些情況下掃描儀是正確的工具,但是在所有情況下,您都可以使用原始流作爲二進制文件或讀取器作爲文本。

正如您懷疑Scanner是簡單文本文檔的正確選擇。

你已經評估了你正在閱讀的材料並給它上下文(就像它有多大)沒有任何教程可以幫助你。 ;)

+0

我的一個寵物恨是StringBuffer。在Java 5.0(2004)中提供並推薦了一種替代方法,即StringBuilder,但現在仍然有人使用它。 :P – 2012-07-29 08:06:56

+1

自2004年以來,Scanner一直存在,這是Java生命週期的一半以上。 – EJP 2016-12-22 23:00:02

+0

@EJP雖然新圖書館需要很長時間才能成爲標準的做事方式, – 2016-12-23 09:10:23

0

Java io包支持字節級別和字符級別操作。兩者都可以在緩衝時尚完成。關於這些IO類型的例子可以在here找到。

掃描儀對象可用於將格式化輸入分解爲令牌並根據其數據類型轉換單個令牌。 Scanner