[Java]标准输入流小问题
2016-03-15 14:51
615 查看
转载自http://gtianshu.blog.163.com/blog/static/4827738820108247435951
如有侵权请联系删除!
从一个有若干行的文件中依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外行首字符丢失现象
String str = null;
br=new BufferedReader(new FileReader(fileName));
do{
str = buf.readLine());
}while(br.read()!=-1);
以下用法会使每行都少首字符
while(br.read() != -1){
str = br.readLine();
}
原因就在于br.read() != -1 这判断条件上。 因为在执行这个条件的时候其实它已经读取了一个字符了,然而在这里并没有对读取出来的这个字符做处理,所以会出现少一个字符,如果你这里写的是while(br.readLine()!=null)会出现隔一行少一行!
建议使用以下方法
String str = null;
while((str = br.readLine()) != null){
//System.out.println(str);//此时str就保存了一行字符串
}
这样应该就可以无字符丢失地得到一行了
如有侵权请联系删除!
从一个有若干行的文件中依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外行首字符丢失现象
String str = null;
br=new BufferedReader(new FileReader(fileName));
do{
str = buf.readLine());
}while(br.read()!=-1);
以下用法会使每行都少首字符
while(br.read() != -1){
str = br.readLine();
}
原因就在于br.read() != -1 这判断条件上。 因为在执行这个条件的时候其实它已经读取了一个字符了,然而在这里并没有对读取出来的这个字符做处理,所以会出现少一个字符,如果你这里写的是while(br.readLine()!=null)会出现隔一行少一行!
建议使用以下方法
String str = null;
while((str = br.readLine()) != null){
//System.out.println(str);//此时str就保存了一行字符串
}
这样应该就可以无字符丢失地得到一行了
相关文章推荐
- java项目中添加日志
- Problems occurred when invoking code from plug-in: "org.eclipse.jface".
- Spring Transaction + MyBatis SqlSession事务管理机制[marked]
- 原:[eclipse启动错误] JVM terminated.Exit code=2
- Java中extends 与 implement 区别
- Spring事件监听Demo
- Java报表工具FineReport导出EXCEL的四种API
- Java中的泛型方法
- gc overhead limit exceeded eclipse解决方案
- 简述java序列化
- selenium 用java查找包含特定文本的位置
- JDK的下载
- Myeclipse配置Maven
- 基于spring4.0配置分布式ehcache,以及相关使用
- Spring 4.2.4.RELEASE MVC 学习笔记 - 9 - MedaiType(咋个办呢 zgbn)
- 【转】Myeclipse8.5 反编译插件 jad 安装
- Java报表工具FineReport导出EXCEL的四种API
- Java集合类
- spring事务管理
- 《JAVA与模式》之观察者模式