黑马程序员技术交流社区
标题:
使用缓冲区,没有办法得到文本的行数?
[打印本页]
作者:
Super_Class
时间:
2013-5-25 10:28
标题:
使用缓冲区,没有办法得到文本的行数?
本帖最后由 Super_Class 于 2013-5-25 11:27 编辑
public static void read3(File file) throws Exception{
FileInputStream fis = new FileInputStream(file);
byte []buf = new byte[1024];
int b = 0;
int count = 1;
while((b = fis.read(buf) )!=-1)
if(b == '\n')
count++;
fis.close();
System.out.println(count);
}
复制代码
用这个代码不论是读哪个都是1.
但是用以下两个代码都没有问题
public static void read1(File file)throws Exception{ //这个是每次读一个字符
FileInputStream fis = new FileInputStream(file);
int b = 0;
int count = 1;
while((b = fis.read()) != -1){
if(b == '\n')
count++;
}
fis.close();
System.out.println(count);
}
复制代码
以下这个是一下都读进内存中,
public static void read2(File file){
try{
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
int b = 0;
int count = 1;
while((b = bis.read())!=-1)
if(b == '\n')
count++;
fis.close();
bis.close();
System.out.println(count);
}catch (Exception e) {
System.out.println(e.getMessage());
}
复制代码
作者:
蔡增辉
时间:
2013-5-25 11:15
你这段代码有问题:
变量b返回的是读入数组buf的个数,而不是读取到的字节;
1.PNG
(8.79 KB, 下载次数: 0)
下载附件
2013-5-25 11:15 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2