2013-02-12 51 views
0

讀取文件時,在我的應用程序循環沒有退出我的客戶端和服務器programms的,每當服務器得到了來自客戶端連接服務器將發送所有可用的ID從MySQL表到客戶端,爲了這個,我已經使用,而循環讀取文件的內容。同時通過的BufferedReader

我嘗試下面的代碼:

while((a=in.read())!=-1) 

但我的問題時,有在文件中讀取while循環沒有退出沒有內容,它是止步本身。如何退出while循環?

+0

'in'是什麼類型? – xtofl 2013-02-12 05:36:14

+2

'in.read()'是一個阻塞調用,它將停止運行並等待一些輸入 – asifsid88 2013-02-12 05:37:14

+0

'in'是InputStreamReader的爲您回覆它從文件中讀取 – asifsid88 2013-02-12 05:37:35

回答

1

in.read()將阻塞,直到數據可被讀取。參閱API文檔http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#read()

此方法一直阻塞輸入數據是可用的,當檢測到 流的末尾,或拋出異常。

你可以做in.available()檢查在做in.read()之前是否有字節可讀。

+0

感謝您的回覆bimalesh,我已經使用in.ready(),而不是in.available所以我的作品 – 2013-02-12 05:57:07

+0

歡迎您@SaiSai – 2013-02-12 06:10:23

+0

,我提出我的問題,最近作爲調試插座,在該應用程序我得到有些問題可以幫助我解決問題。 – 2013-02-26 06:33:02

0

你不應該使用while循環,而應該使用線程,它將等待來自套接字的輸入,並且當數據可用時它將讀取,然後它將發送/處理在流。使用一段時間,等待(阻塞),你的主線程是不是一個好主意

+0

線程將使用while循環。沒有答案。 – EJP 2013-02-12 21:40:05