2016-09-13 13 views
0

私はJava IOについて学習しています。 read()方法でファイルの最後にjavaの読み込みメソッドが-1を返します

私はこれが何を意味するのか分からない、それは-1を返し、ファイルの末尾に

を言っ通知がありますか? と、ファイルの末尾になるように-1の重要性は何である

例:

import java.io.*; 
class Simple{ 
public static void main(String args[])throws Exception{ 
    FileReader fr=new FileReader("abc.txt"); 
    int i; 
    while((i=fr.read())!=-1) 
    System.out.println((char)i); 

    fr.close(); 
} 
} 
+0

値-1はそれ自身では特別ではありません。特別なことは、ファイルの終わり以外にread()から-1が返されることはないという2番目の保証があることです。これにより値-1が一意の応答になり、ファイルの終わりに達した時点を正確に知ることができます。 – Jeutnarg

答えて

2

最初にドキュメントをチェックしてください!

https://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html#read()

関連セクション:

公共のint型の読み取り() はにIOExceptionが単一の文字を読み込みます。

オーバーライド:IOExceptionが - I/Oエラーが発生した場合:ストリームの終わりに が

例外

に達した場合、文字読み取り、 または-1:クラスReaderに

戻りを読みます

これは価値があるため、のセンチネル値と呼ばれることがよくあります。 Sentinelの値は明らかな無効な応答である戻り値を介して特殊な条件を示すために使用されます(例:-1は明らかに文字ではないためです)。状態やエラーコードのように考えてください。この場合、状態:ファイルの終わりを意味します。

1

-1は単にを取得する前に、ストリームの読み取りを停止することができ読み込むためのより多くの何もないことを意味IOException

0

-1は、ファイルの最後に達したときです。

関連する問題