2012-02-14 62 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位置,然后阅读它。