if (nextChar >= nChars)
fill();//当前缓冲已经读完,填充缓冲
if (nextChar >= nChars) { /* EOF *///读到类文件末尾
if (s != null && s.length() > 0)
return s.toString();
else
return null;
}
boolean eol = false;
char c = 0;
int i;
/* Skip a leftover '\n', if necessary */
if (omitLF && (cb[nextChar] == '\n'))
nextChar++;
skipLF = false;
omitLF = false;
charLoop:
for (i = nextChar; i < nChars; i++) {//从缓冲中每次取一行
c = cb;
if ((c == '\n') || (c == '\r')) {
eol = true;
break charLoop;//读到类一行的末尾
}
}
startChar = nextChar;
nextChar = i;
if (eol) {
String str;
if (s == null) {
str = new String(cb, startChar, i - startChar);
} else {
s.append(cb, startChar, i - startChar);
str = s.toString();
}//生成返回的字符串
nextChar++;
if (c == '\r') {
skipLF = true;
}
return str;
}
if (s == null)
s = new StringBuffer(defaultExpectedLineLength);
s.append(cb, startChar, i - startChar);
}
}
}
我把我知道的写上去了,他就是先把数据读到一个缓冲数组,然后每次从数组中取一行出来。。 作者: zhuyunfei00000 时间: 2014-3-29 00:22
public void newLine()
throws IOException写入一个行分隔符。行分隔符字符串由系统属性 line.separator 定义,并且不一定是单个新行 ('\n') 符。
抛出: IOException - 如果发生 I/O 错误
import java.io.*;
public class TestArray
{
public static void main(String[] args)
{
try
{
// Create a new instance of a BufferedWriter object using
// a StringWriter.
StringWriter stringWriter = new StringWriter();
BufferedWriter bufWriter = new BufferedWriter(stringWriter);
// Write to the underlying StringWriter.
String s = "This is the string being written.";
// Print out the first 12 characters.
bufWriter.write(s, 0, 12);
// Print a newline character.
bufWriter.newLine();
// Print the rest of the string.
bufWriter.write(s, 12, s.length() - 12);
bufWriter.flush();
System.out.println(stringWriter.getBuffer());
// Close the BufferedWriter object and the underlying
// StringWriter object.
stringWriter.close();
bufWriter.close();
}
catch (IOException ex)
{
System.out.println(ex.toString());
}
}
}
/*
Output:
This is the
string being written.
*/ 作者: 我叫MT 时间: 2014-3-29 20:43
其实它也是一个字符一个字符读的,它读一个便把字符存储到一个容器中,直到读到换行符为止