0

I am having to read in a while and use an algorithm to code each letter and then print them to another file. I know generally to find the end of a file you would use readLine and check to see if its null. I am using a bufferedReader. Is there anyway to check to see if there is another character to read in? Basically, how do I know that I just read in the last character of the file?

I guess i could use readline and see if there was another line if I knew how to determine when I was at the end of my current line.

I found where the File class has a method called size() that supposidly turns the length in bytes of the file. Would that be telling me how many characters are in the file? Could i do while(charCount<length) ?

4

2 に答える 2

10

あなたが何をしたいのかよくわかりません。ファイルを文字ごとに読みたいと思うかもしれません。もしそうなら、あなたはすることができます:

FileInputStream fileInput = new FileInputStream("file.txt");
int r;
while ((r = fileInput.read()) != -1) {
   char c = (char) r;
   // do something with the character c
}
fileInput.close();

FileInputStream.read()-1読み取る文字がなくなると戻ります。inta ではなくan を返すcharため、キャストは必須です。

ファイルが UTF-8 形式で、マルチバイト文字が含まれている場合、これは機能しないことに注意してください。その場合、 をラップしてFileInputStreamInputStreamReader適切な文字セットを指定する必要があります。簡単にするために、ここでは省略します。

于 2013-02-23T20:47:44.487 に答える
0

私の理解では、文字が残っていない場合、バッファは -1 を返します。したがって、次のように書くことができます。

BufferedInputStream in = new BufferedInputStream(new FileInputStream("filename"));
while (currentChar = in.read() != -1) { 
    //do something 
}
in.close();
于 2013-02-23T20:53:47.650 に答える