最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值

 更新時(shí)間:2021年12月09日 16:43:45   作者:熱情的rhew  
這篇文章主要介紹了使用BufferedReader讀取TXT文件中數(shù)值,并輸出最大值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

BufferedReader讀取TXT文件中數(shù)值輸出最大值

1.題目

txt文件中數(shù)字的讀取,并輸出最大值

輸出最大值92

2.BufferedReader 介紹

  • BufferedReader 是緩沖字符輸入流。它繼承于Reader。
  • BufferedReader 的作用是為其他字符輸入流添加一些緩沖功能。

BufferedReader 函數(shù)列表:

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讀取每一行,保存到新個(gè) String 變量中
  • 將String中的數(shù)字,轉(zhuǎn)換成數(shù)組
  • 從數(shù)組中比較出最大值

4.問題

BufferedReader的readLine()方法是阻塞式的, 如果到達(dá)流末尾, 就返回null, 但如果client的socket末經(jīng)關(guān)閉就銷毀, 則會(huì)產(chǎn)生IO異常.,使用后要記得close

使用readLine依次讀取各行,處理后輸出,如果用以下方法,則會(huì)出現(xiàn)除第一行外行首字符丟失,原因就在于br.read() != -1 這判斷條件上。 因?yàn)樵趫?zhí)行這個(gè)條件的時(shí)候其實(shí)它已經(jīng)讀取了一個(gè)字符了,然而在這里并沒有對(duì)讀取出來的這個(gè)字符做處理,所以會(huì)出現(xiàn)少一個(gè)字符,如果你這里寫的是while(br.readLine()!=null)會(huì)出現(xiàn)隔一行少一行!

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]);參數(shù)里開頭和結(jié)尾不能含有空格

   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);
	    	   //保存數(shù)據(jù)
	    	   String message = "";  
	    	   String line = null;  
	    	   while((line = br.readLine()) != null) {
	    		   message = message+" "+line;  
	    	   }
	    	   //去掉兩端空格
	    	   message = message.trim();
                   //轉(zhuǎn)化成數(shù)組
	    	   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.關(guān)閉文件
		       br.close();
	    	   fr.close();	    	   
	       } catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	 } 
}

6.小結(jié)一下

  • 使用BufferedReader中readLine一行一行的讀取txt中數(shù)字
  • 使用line將要丟失的一行,先保存起來,就不會(huì)丟失了
  • String.trim()將數(shù)據(jù)兩端的空格給去掉了

使用BufferedReader讀取文件的好處

  • 沒有緩沖區(qū)時(shí),每次讀取操作都會(huì)導(dǎo)致一次文件讀取操作(就是告訴操作系統(tǒng)內(nèi)核我要讀這個(gè)文件的這個(gè)部分,麻煩你幫我把它取過來)。
  • 有緩沖區(qū)時(shí),會(huì)一次性讀取很多數(shù)據(jù),然后按要求分次交給上層調(diào)用者。

讀取塊大小通常是按最適合硬件的大小來讀的,因?yàn)閷?duì)于硬件來說,一次讀取一塊連續(xù)數(shù)據(jù)(比如 1K)和一次讀取一個(gè)字節(jié)需要的時(shí)間幾乎是一樣的(都是一次讀操作,只是最終提交的數(shù)據(jù)量有差異)。帶緩沖的 I/O 和不帶緩沖的相比效率差異是非常顯著的,你可以自行寫程序測(cè)試。

說到j(luò)ava reader緩存,其實(shí)有兩層緩存:

OS緩存,把磁盤數(shù)據(jù) 讀入內(nèi)存,通過read ahead, io scheduler等減少磁盤讀取次數(shù).

App緩存,做緩存/預(yù)讀,即BufferredReader的角色.

BufferredReader的作用:我的理解

1、減少System Call次數(shù)

2、減少磁盤讀取次數(shù)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用@Retryable注解實(shí)現(xiàn)HTTP請(qǐng)求重試

    Java使用@Retryable注解實(shí)現(xiàn)HTTP請(qǐng)求重試

    HTTP調(diào)用是Java應(yīng)用與外部API進(jìn)行交互時(shí)重要的訪問方式之一,為了確保在遇到臨時(shí)性問題時(shí)能自動(dòng)重試,我們可以設(shè)計(jì)一個(gè)靈活的重試機(jī)制,在Java中,我們可以通過注解來實(shí)現(xiàn)這一功能,文將介紹如何使用注解@Retryable來實(shí)現(xiàn)HTTP調(diào)用的重試機(jī)制,需要的朋友可以參考下
    2024-10-10
  • SpringBoot this調(diào)用@Bean效果詳解

    SpringBoot this調(diào)用@Bean效果詳解

    這篇文章主要介紹了在一個(gè)@Bean方法內(nèi),this調(diào)用同一個(gè)類的@Bean方法會(huì)有什么效果,我們可以通過bean的名稱、bean的類型或者bean的名稱+類型來獲取容器中的bean
    2023-02-02
  • Java實(shí)現(xiàn)Map遍歷key-value的四種方法

    Java實(shí)現(xiàn)Map遍歷key-value的四種方法

    本文主要介紹了Java實(shí)現(xiàn)Map遍歷key-value的四種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Netty中最簡單的粘包解析方法分享

    Netty中最簡單的粘包解析方法分享

    黏包 是指網(wǎng)絡(luò)上有多條數(shù)據(jù)發(fā)送給服務(wù)端, 但是由于某種原因這些數(shù)據(jù)在被接受的時(shí)候進(jìn)行了重新組合,本文分享了一種最簡單的黏包解析方法, 非常適用于初初初級(jí)選手
    2023-05-05
  • Java使用線程池批量處理數(shù)據(jù)操作具體流程

    Java使用線程池批量處理數(shù)據(jù)操作具體流程

    這篇文章主要給大家介紹了關(guān)于Java使用線程池批量處理數(shù)據(jù)操作的相關(guān)資料,Java多線程編程中線程池是一個(gè)非常重要的概念,線程池可以提高線程的復(fù)用率和任務(wù)調(diào)度的效率,尤其是當(dāng)需要查詢大批量數(shù)據(jù)時(shí),需要的朋友可以參考下
    2023-06-06
  • java拷貝指定目錄下所有內(nèi)容到minIO代碼實(shí)例

    java拷貝指定目錄下所有內(nèi)容到minIO代碼實(shí)例

    這篇文章主要介紹了java拷貝指定目錄下所有內(nèi)容到minIO代碼實(shí)例,創(chuàng)建桶 直接使用工具類先判斷,再創(chuàng)建即可,創(chuàng)建文件夾,需要注意以"/"結(jié)尾,實(shí)際也是在minIO上創(chuàng)建文件,只是作為目錄的表現(xiàn)形式展示,需要的朋友可以參考下
    2024-01-01
  • 帶你了解10道java入門面試題

    帶你了解10道java入門面試題

    面試題相信大家都不陌生,想要一個(gè)好的工作面試題必不可少的,下面和小編一起來學(xué)習(xí)與了解Java當(dāng)中有有些什么面試題吧,希望能給你帶來幫助
    2021-08-08
  • Spring Cloud Gateway全局異常處理的方法詳解

    Spring Cloud Gateway全局異常處理的方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring Cloud Gateway全局異常處理的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • SpringBoot?實(shí)現(xiàn)CAS?Server統(tǒng)一登錄認(rèn)證的詳細(xì)步驟

    SpringBoot?實(shí)現(xiàn)CAS?Server統(tǒng)一登錄認(rèn)證的詳細(xì)步驟

    ??CAS(Central?Authentication?Service)中心授權(quán)服務(wù),是一個(gè)開源項(xiàng)目,目的在于為Web應(yīng)用系統(tǒng)提供一種可靠的單點(diǎn)登錄,這篇文章主要介紹了SpringBoot?實(shí)現(xiàn)CAS?Server統(tǒng)一登錄認(rèn)證,需要的朋友可以參考下
    2024-02-02
  • Spring中的@ConditionalOnProperty作用和用法詳解

    Spring中的@ConditionalOnProperty作用和用法詳解

    這篇文章主要介紹了Spring中的@ConditionalOnProperty作用和用法詳解,在spring boot中有時(shí)候需要控制配置類是否生效,可以使用@ConditionalOnProperty注解來控制@Configuration是否生效,需要的朋友可以參考下
    2023-11-11

最新評(píng)論

永城市| 平定县| 周至县| 汉川市| 南澳县| 沂水县| 启东市| 虎林市| 昌乐县| 淮安市| 阿克苏市| 开鲁县| 娱乐| 武安市| 萨嘎县| 黔江区| 定州市| 鹤庆县| 仙桃市| 塔河县| 红安县| 古浪县| 双牌县| 图木舒克市| 凌云县| 秦皇岛市| 日喀则市| 衡阳市| 宁夏| 鲜城| 汝阳县| 中卫市| 宜春市| 化州市| 呼玛县| 永善县| 关岭| 江永县| 札达县| 厦门市| 丹江口市|