使用BufferedReader读取TXT文件中数值,并输出最大值
BufferedReader读取TXT文件中数值输出最大值
1.题目
txt文件中数字的读取,并输出最大值
输出最大值92
2.BufferedReader 介绍
BufferedReader
是缓冲字符输入流。它继承于Reader。BufferedReader
的作用是为其他字符输入流添加一些缓冲功能。
BufferedReader 函数列表:
BufferedReader(Reader in) BufferedReader(Reader in, int size) void close() void mark(int markLimit) boolean markSupported() int read() int read(char[] buffer, int offset, int length) String readLine() boolean ready() void reset() long skip(long charCount)
3.思路
- 打开文件
- 使用BufferedReader读取
- readLine读取每一行,保存到新个 String 变量中
- 将String中的数字,转换成数组
- 从数组中比较出最大值
4.问题
BufferedReader的readLine()方法是阻塞式的, 如果到达流末尾, 就返回null, 但如果client的socket末经关闭就销毁, 则会产生IO异常.,使用后要记得close
使用readLine依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外行首字符丢失,原因就在于br.read() != -1 这判断条件上。 因为在执行这个条件的时候其实它已经读取了一个字符了,然而在这里并没有对读取出来的这个字符做处理,所以会出现少一个字符,如果你这里写的是while(br.readLine()!=null)会出现隔一行少一行!
String str = null; br=new BufferedReader(new FileReader(fileName)); while(br.read()!=-1){ str = buf.readLine()); }
java.lang.NumberFormatException: For input string: " "这里的Integer.valueOf(s2[i]);参数里开头和结尾不能含有空格
for(int i=0;i<s2.length;i++){ a[i]= Integer.valueOf(s2[i]); }
5.解决
直接上代码了。。。。。
package test; import java.io.*; public class testtwo { public static void main(String[] args) throws IOException { try { //1.打开文件 FileReader fr=new FileReader("test.txt"); //2.使用BufferedReader读取 BufferedReader br=new BufferedReader(fr); //保存数据 String message = ""; String line = null; while((line = br.readLine()) != null) { message = message+" "+line; } //去掉两端空格 message = message.trim(); //转化成数组 String s2[]=message.split(" "); int a[]=new int[message.length()]; for(int i=0;i<s2.length;i++){ a[i]= Integer.valueOf(s2[i]); } //比较最大值 int max=a[0]; for(int j=1;j<a.length;j++){ if(max<a[j]){ max=a[j]; } } System.out.println("最大值为"+max); //4.关闭文件 br.close(); fr.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
6.小结一下
- 使用BufferedReader中readLine一行一行的读取txt中数字
- 使用line将要丢失的一行,先保存起来,就不会丢失了
- String.trim()将数据两端的空格给去掉了
使用BufferedReader读取文件的好处
- 没有缓冲区时,每次读取操作都会导致一次文件读取操作(就是告诉操作系统内核我要读这个文件的这个部分,麻烦你帮我把它取过来)。
- 有缓冲区时,会一次性读取很多数据,然后按要求分次交给上层调用者。
读取块大小通常是按最适合硬件的大小来读的,因为对于硬件来说,一次读取一块连续数据(比如 1K)和一次读取一个字节需要的时间几乎是一样的(都是一次读操作,只是最终提交的数据量有差异)。带缓冲的 I/O 和不带缓冲的相比效率差异是非常显著的,你可以自行写程序测试。
说到java reader缓存,其实有两层缓存:
OS缓存,把磁盘数据 读入内存,通过read ahead, io scheduler等减少磁盘读取次数.
App缓存,做缓存/预读,即BufferredReader的角色.
BufferredReader的作用:我的理解
1、减少System Call次数
2、减少磁盘读取次数
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。
原文出处:https://blog.csdn.net/qq_33835370/article/details/84953228
相关文章
- 这篇文章主要介绍了C#逐行读取txt文件的方法,是C#程序设计中非常实用的一个技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#求两个数中最大值的方法,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了如何用python获取txt文件中关键字的数量,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-24
- 这篇文章主要介绍了c#获取数组中最大数的值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c语言实现找最大值最小值位置查找,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-04
- 这篇文章主要介绍了PHP简单实现生成txt文件到指定目录的方法,简单对比分析了PHP中fwrite及file_put_contents等函数的使用方法,需要的朋友可以参考下...2016-04-28
- 这篇文章主要介绍了C#读写txt文件的小例子,大家可以参考使用...2020-06-25
- 这篇文章主要介绍了MATLAB 求取离散点的曲率最大值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-16
- 这篇文章主要给大家介绍了关于Java中求最大值的4种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-31
浅谈缓冲字符流 BufferedReader BufferedWriter用法
这篇文章主要介绍了缓冲字符流 BufferedReader BufferedWriter的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-21- 下面我们利用几个实例来总结了利用php fopen函数来实现文件的读写操作,有需要学习的朋友可参考参考。 简单的参考fopen函数 fopen() 函数打开文件或者 URL。 如果...2016-11-25
- 这篇文章主要介绍了php删除txt文件指定行及按行读取txt文档数据的方法,涉及php针对txt文件的按行读取、删除等操作技巧,需要的朋友可以参考下...2017-02-09
- 这篇文章主要介绍了C#简单读写txt文件的方法,涉及C#针对文件的基本打开、写入、保存与读取等操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本文给大家汇总了一下使用javascript实现查找数组中最大最小值的一些方法,非常的简单实用,有需要的小伙伴可以来参考下。...2016-02-18
- 本文通过三种解决方案给大家介绍js中取二维数组中最大值的方法。介绍的非常详细,具有参考价值...2016-04-19
- 下面小编就为大家分享一篇找到整型阵列中最大值和最小值的几种方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了如何使用BufferedReader循环读文件的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-22
- 这篇文章主要介绍了C#求n个数中最大值和最小值的方法,涉及C#中max及min方法的使用技巧,需要的朋友可以参考下...2020-06-25
- 今天没事来用php+txt现实现一个网站计数器程序,代码我们主要用file_get_content 与fopen,fwrite读写就OK了. <?php Class Sit_count{ public $FileName = 'count...2016-11-25
- max() 返回最大值。 语法 max(x,y)参数 描述 x 必需。一个数。 y 必需。一个数。 说明 max() 返回参数中数值最大的值。 如果仅有一个参数且为数组,max() 返回该...2016-11-25