@JudgeJohnの答えは良いです-コメントしますが、残念ながらできません。最初の行を 1 行ずつ読むことで、改行の実装などのシステムの詳細が Java のさまざまなライブラリによって処理されることが保証されます。Scannerファイルに対して何らかの種類のリーダーを使用すると、行を簡単に列挙できます。Stringこの後、たとえばtoCharArray()メソッドを使用して、取得した文字を文字ごとに読み取ることは問題になりません。
重要な追加 -StreamおよびReaderオブジェクトを使用Scannerし、それらに対して s を使用する場合、コードがプロセスの最後を適切に処理することが非常に重要です。つまり、ファイル ハンドルなどのシステム リソースを破棄します。これはclose()、これらのクラスのメソッドを使用して Java で行われます。ここで、読み取りを終了して を呼び出すだけでclose()、計画どおりに進んでいれば問題ありませんが、例外がスローされ、close()メソッドが呼び出される前にメソッドが終了する可能性があります。良い解決策はtry - catchortry - finallyブロックです。例えば
Scanner scanner = null;
try {
scanner = new Scanner(myFileStream);
//use scanner to read through file
scanner.close();
} catch (IOException e) {
if (scanner != null) scanner.close(); //check for null in case scanner never got initialised.
}
さらに良いのは
Scanner scanner = null;
try {
scanner = new Scanner(myFileStream);
//use scanner to read through file
} finally {
if (scanner != null) scanner.close(); //check for null in case scanner never got initialised.
}
ブロックの終了finally方法に関係なく、ブロックは常に呼び出されます。tryさらに良いことに、Java には次のようなtry-with-resourcesブロックがあります。
try (Scanner scanner = new Scanner(myFileStream)) {
//use scanner to read through file
}
これは、null のすべてのチェックfinallyと の呼び出しを行いclose()ます。非常に安全で、すばやく入力できます。