Just nu i M3-nätverket
Gå till innehåll

Läsa in textfil från Server med Scanner stannar efter halva filen


Nigge

Rekommendera Poster

Tjena!

 

Hoppas jag kan få hjälp här, det här stör mig verkligen!

Jag håller på med ett program som ska läsa in textfiler från servrar och skriva ut innehållet med radbrytningar.

 

När jag skriver ut innehållet ur en väldigt kort textfil(10 rader) så går det fint. Men när jag kommer till att skriva ut innehållet i en lång textfil med hundratals rader så stannar det någonstans mitt i textfilen. Jag får inga felmeddelanden eller dyl.

 

Koden jag använder ser ut såhär (serverList är en arrayList med servrarna jag vill hämta ifrån).:

	public void run() {
  	// System.out.println("startar tråden");
       	for(int x=0;x<serverList.size();x++){

      	System.out.println("X = "+x);
    	//  System.out.println("for loopen i downloadusers");
       	try {
          	Server server = (Server)serverList.get(x);
           	URL url = new URL(server.getServerName());
           	Scanner s = new Scanner(url.openStream());
           	while ( s.hasNextLine() ){
               	System.out.println("Det finns nästa rad");
       	processLine( s.nextLine() );
      	}
           	System.out.println("Det finns ingen nästa rad");
       	} catch (IOException ex) {
         	//  Logger.getLogger(UsersOnline.class.getName()).log(Level.SEVERE, null, ex);
      	System.out.println("Nånting blev fel");
      	}
  	}
}

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){

     	System.out.println("UsersOnline :"+tmp);
}  

Tack för all hjälp jag kan få!:)

 

/Niklas

Länk till kommentar
Dela på andra webbplatser

Hej Nigge.

 

Koden fungerar i DesktopApplication java. Och mycket bra.

Mixtra lite så du får till den att passa ditt prg.

 

 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

 

//-----------------------------------------------------------

 

 

jButton1.addActionListener(new ActionListener() {  

           public void actionPerformed(ActionEvent e) { 
              try{ 

   File inputFile = new File("C:/xxx/xxx/Desktop/Abc.txt");  //sätt in sökvägen här mellan citat-tecknen

   FileReader in = new FileReader(inputFile); 

   int c; 

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

System.out.print((char)c);

   in.close(); 

                  System.out.println("   Read and Write");         

              } 
              catch(Exception l){ 
                   System.out.println("error "); 

              } 
           } 
});  

 //-----------------------------------------------------------

       // TODO add your handling code here:
   }

 

 

Länk till kommentar
Dela på andra webbplatser

 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

 //-----------------------------------------------------------

   jButton1.addActionListener(new ActionListener() {  

           public void actionPerformed(ActionEvent e) { 
              try{ 

   File inputFile = new File("C:/xxx/xxx/Desktop/Abc.txt");  //sätt in sökvägen här mellan citat-tecknen

   FileReader in = new FileReader(inputFile); 

   int c; 

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

System.out.print((char)c);

   in.close(); 

                  System.out.println("   Read and Write");         

              } 
              catch(Exception l){ 
                   System.out.println("error "); 

              } 
           } 
});  

 //-----------------------------------------------------------

       // TODO add your handling code here:
   }

 

 

Länk till kommentar
Dela på andra webbplatser

Tjena! tack för svaret! problemet är att jag inte lyckas få File att ansluta till en URL...

servern ligger på nätet...

/N

 

 

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

 //-----------------------------------------------------------

   jButton1.addActionListener(new ActionListener() {  

           public void actionPerformed(ActionEvent e) { 
          	try{ 

   File inputFile = new File("C:/xxx/xxx/Desktop/Abc.txt");  //sätt in sökvägen här mellan citat-tecknen

   FileReader in = new FileReader(inputFile); 

   int c; 

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

System.out.print((char)c);

   in.close(); 

              	System.out.println("   Read and Write");     	

          	} 
          	catch(Exception l){ 
                   System.out.println("error "); 

          	} 
           } 
});  

 //-----------------------------------------------------------

       // TODO add your handling code here:
   }

 

 

Länk till kommentar
Dela på andra webbplatser

Så här kan man öppna en websida i java.

Har anpassat till DesktopApllication, men du kan ju använda annan java

om du tar bort //

Importen lägger du överst.

 

 

 

   private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {


   // import java.io.*;
//public class mani {
//public static void main(String args[])throws IOException{

  //---------------------------------------------------     
       try
{ 
Process p=Runtime.getRuntime().exec("cmd /c start [url="http://www.google.com/"]http://www.google.com[/url]"); 
} 
catch(IOException e1) {System.out.println(e1);} 


  // }
//}
    //--------------------------------------------------------      
       // TODO add your handling code here:
   }

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tjena och enormt tack att du hjälper till! Det uppskattas enormt! Det är egentligen inte en webbsida jag vill visa utan bara läsa in en txt fil rad för rad, och sedan placera dessa rader i en samling. Och först ska jag hämta en txtfil från en server, denna txtfil innehåller ca 10-15 rader med adresser till olika servrar. Denna hämtning och presentation fungerar klockrent, men när jag försöker göra exakt samma kod för att hämta från en av de andra servrarna (denna txtfil är mycket mycket större och har flera hundra rader) då hämtar den in ett gäng(säg halva) sedan fastnar det bara, körningen blir inte klar och inget felmeddelande dyker upp. Ett felmeddelande vore trevligt... ;-)

Länk till kommentar
Dela på andra webbplatser

Det är precis sådär jag gjort, så konstigt att den bara orkar igenom halva filen... Precis som att den inte orkar längre:-)

Länk till kommentar
Dela på andra webbplatser

Det är precis sådär jag gjort, så konstigt att den bara orkar igenom halva filen... Precis som att den inte orkar längre:-)

Så här det står det på webbsidan:

Don't forget to close your scanner object when you're done reading in all the data!

Men du har ingen scanner.close(); så vitt jag kan se.

Länk till kommentar
Dela på andra webbplatser

Det är sant, det har jag inte... Tanken är att eftersom halva filen gås igenom så bör det inte vara det, men Java är ju java;-) ska testa detta imorgon, återkommer med besked ;-)/tack igen

Länk till kommentar
Dela på andra webbplatser

Hej! Har nu upptäckt vad som är problemet i detta fall...

for(int x=0;x<serverList.size();x++){

(observera att for loopen sträcker sig längre än sådär men bara för att visa.

 

När jag har for loopen där(den har som uppgift att loopa igenom arraylisten med servrar som skall gås igenom.

Tar jag bort for loopen så läses hela filen in.

Men eftersom antalet servrar som skall gås igenom, samt deras addresser kan ändras så kommer jag vara tvungen att gå igenom dessa för att läsa in samtliga.

Länk till kommentar
Dela på andra webbplatser

Det var dessvärre inte for-loopen som var felet...

Det råkade sig så att det var färre användare online när jag utförde mina glädjeskutt att det fungerade... nu ikväll så var det fler användare online och det slutade fungera...

 

textfilen jag vill läsa in är bl.a denna...(alla servrar är uppbyggda på samma sätt).

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...