黑马程序员技术交流社区
标题:
BufferedReader
[打印本页]
作者:
滴水石穿
时间:
2014-12-20 13:01
标题:
BufferedReader
/*
* 利用缓冲区读取文件
*/
public class BufferedReaderDemo {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("d:\\temp\\java.txt"));
String str=null;
// char[] ch = new char[1024]; 为什么不用定义临时存储?
while((str=br.readLine())!=null){
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
//为什么不定义临时存储器 把数据存储到这里 在去读?谢谢
作者:
wangcongwu
时间:
2014-12-20 13:14
你当然不定义临时存储了,因为你使用的方法是readLine,给你讲讲readLine 是啥,readline 本身就调用了存储器,
public String myReadLine() throws IOException
{
lineNumber++;
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch = r.read())!= -1)
{
if(ch =='\r')
continue;
if(ch =='\n')
return sb.toString();
else
sb.append((char)ch);
}
if(sb.length()!= 0)
return sb.toString();
return null;
}
复制代码
作者:
wangcongwu
时间:
2014-12-20 13:16
这是我自己写的readLine 方法和java 的一样功能,里边的sb就是存储器,所以你调用上边的readLine 方法的时候直接返回的就是字符串了还带空格和换行的字符串,多高级,你还定义啥存储器。
作者:
yninggis
时间:
2014-12-20 13:23
你这里定义的临时存储器是字符数组,需要一个一个字符的读取并存到临时存储器中才行。readLine()是按行读取了,自然就不能存放到你定义的数组存储器了。而且readLine()中已经利用了临时存储器的功能。
作者:
superjiejie
时间:
2014-12-20 13:46
不用 ! 这个就是一个容器 把一行的数据保存到这里
作者:
edidada
时间:
2014-12-20 19:27
readLine()方法内部调用了read()方法,可以简单理解为:readLine()是加强版的read()
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2