2012-02-14 49 views
0

我希望能得到一個答案,這真的讓我感到困擾......我正在使用掃描儀從服務器上的txtfile中讀取數據。到目前爲止,我只想做一個帶有文本文件內容的System.out.println,服務器上的每一行都是我屏幕上的一個新行。我有一個arrayList與服務器(服務器的數量不同,然後我使用一個for循環,通過arrayList和每個服務器,我想讀取在arraylist url中的文本文件。我的問題是,它只能讀取和打印大約第一個文本文件的一半,然後它似乎停止或凍結...沒有錯誤信息或任何東西從服務器讀取txtfiles停止「中途通過」

我用來獲取服務器地址的代碼是這樣的:

for(int x=0;x protected void processLine(String aLine){ ' 
// System.out.println("processLine körs"); 
//use a second Scanner to parse the content of each line Scanner scanner = 
new Scanner(aLine); scanner.useDelimiter (System.getProperty("line.separator")); 

if (scanner.hasNext()){ //System.out.println("scanner.hasNext()"); 

// String[] str = scanner.next().split(":"); String str = scanner.next(); log(str); } } 

private static void log(String tmp){ 

//if (tmp.length>1){ // if (tmp[0].equals("url0")){ // pilotServer = new 
PilotServer(tmp[1]); // addServer(pilotServer); // } // } 
System.out.println("UsersOnline :"+tmp); } 

我希望這是有道理的:)

+0

您的代碼無法讀取,並且存在可疑錯誤。你能先修好嗎? – 2012-02-14 09:47:49

回答

0

問題可能出現在文本文件編碼中。 Scanner類的hasNext()方法有時會返回false,當它到達一些不同編碼的字符時,您的循環就會停止。您可以通過檢查文本文件中的行來輕鬆檢查該行,在該行中應用程序停止處理。

0

如果代碼只是凍結,看起來服務器沒有發送數據,所以掃描器就在那裏等待它。

您可以嘗試將文件下載到tmp位置,然後閱讀它。