readLine 的注意點

2021-08-26 14:42:52 字數 1261 閱讀 3573

我在做csv檔案匯入匯出時用了bufferedreader,用起來挺方便的。

bufferedreader br = new bufferedreader(new inputstreamreader(socket.getinputstream()));
string line ;while ((line = br.readline())!=null)
readline()用起來很方便,每次都是返回一行。不過該方法有許多值得注意的地方:
一、網路模式:1、在網路上,readline()是阻塞模式,也就是說如果readline()讀取不到資料的話,會一直阻塞,而不是返回null,所以如果你想要在while迴圈後執形相關操作是不可能的,因為while()裡面是乙個
死迴圈,一旦讀不到資料,它又開始阻塞,因此永遠也無法執形while()迴圈外面的操作,所以應該把操作放在while迴圈裡面。(在我做的即時通訊裡,為了能夠不斷獲取伺服器返回的訊息,就是用這種方法,不斷去伺服器獲取訊息

,一旦有就返回。)

2、在while()裡面判斷readline()!= null的時候要賦值給乙個string,因為如果不為null,那麼這時候已經讀了一行。如果用while (br.readline()!=null),那麼下面沒法再獲取到這一行,所以應該用

while ((line = br.readline())!=null){}

3、readline()通過下列字元之一即可認為某行已終止:換行 ('\n')、回車 ('\r') 或回車後直接跟著換行,所以我們在傳送資料的時候要再後面加上這些標誌符,否則程式會阻塞。而我是直接用下面這種方法:

printstream ps = new printstream(socket.getoutputstream(), true, "utf-8");
ps.println()。
ps.println()已經包含換行了,所以不要用print(),若是要就要在後面加上換行符;
4、readline()只有在資料流發生異常或者另一端被close()掉時,才會返回null值。二、讀取檔案模式:
1、readline()什麼時候才會返回null呢?讀取到檔案等的結尾時候。(注意和網路上的是不一樣的)。

ExecuteNonQuery 的注意點

最近忙個專案,在查詢某個表中是否有資料的時候,我用了executenonquery 並通過判斷值是否大於0來判斷資料的存在與否。結果與我所設想的很不一致,除錯時才發現,其執行後返回的結果是 1,對此我很是不理解,回頭查了下資料,如下顯示 sqlcommand.executenonquery 方法對連...

UITextView的注意點

cell.label.text 會議介紹 cell.text text 2015年,德州儀器為推動中國創新半導體技術的發展,幫助工程師提高生產力並激發新設計。特邀請國內頂尖專家在全國舉辦技術培訓研討會,與您分享最新的研發案例和堵門設計技巧,為您提供最前沿的積水昂街和深度剖析沒在培訓中,阿三搜尋空間開...

shared ptr的注意點

對於c 新手而言,面對複雜的專案中指標的四處傳遞,或者異常後的處理,很容易引起申請了記憶體沒有釋放的問題,c 11給出了智慧型指標來簡化這一問題,常用的是shared ptr。shared ptr構造出的物件來管理一塊記憶體,結構如下 其中ptr指向了一塊記憶體空間,ret count儲存了有多少s...