Är du helt säker på att du vill använda en textfil!?
Databas är alltid att föredra, förutom i sällsynta undantag. Men det kanske är i dessa jaktmarker du befinner dig!?
Är din mjukvara en stand-alone är det ju bara att sätta en timer på 10 minuter... och ladda in det i din mjukvara...
Men man kan kanske utgå från att textfilens innehåll förändras!?
Är det denna förändring du vill göra var tionde minut?
Om inte... det är ju rätt meningslöst att hämta *samma* fil var tionde minut!
***
Detta kanske inte var så stor hjälp, rent javamässigt. Men ditt projekt innehåller en del tvivelaktiga lösningar. Antingen har du förklarat dåligt och jag missuppfattar dig, eller kanske du bör se över själva upplägget. Kanske att anta utmaningen att sätta dig in i hur databas på webben fungerar?
Jag VILL inte använda en textfil... som du säger en databas vore ju helt klart att föredra...
Men dessvärre är det det enda som finns:-S och inte bara en textfil... utan flera...
Det jag ska komma åt är en lista över användare som är online på servrar.
Det är uppbyggt såhär att först måste en txt fil laddas ner, denna txtfil innehåller url till servrarna.(dessa kan ändras, så denna måste laddas ned varje gång applikationen startas). Som tur var så är txtfilen uppdelad så att varje rad motsvarar var sin server.
Sedan så ska textfiler hämtas från varje av dessa servrar. Dessa txtfiler har en rad för varje onlineanvändare.
Och dessa filer uppdateras var 10.de minut så därav kravet att applikationen skall hämta/kolla txtfilen med jämna mellanrum.
Så optimalt är det absolut inte men jag har dessvärre ingen befogenhet att ändra detta på servern, så jag får snällt anpassa mig:-) som tur var behöver jag bara hämta information och inte skriva någon information...:-)
Jag har med hjälp av en Scanner lyckats läsa in informationen från "serverlista"filen och placera dessa url i en arraylist.
Jag kan även läsa in EN av servrarna med användare. Men när jag försöker göra en for-loop för att läsa in en server i taget så läser den in ca halva första filen, sedan fryser det bara.
Koden jag använder för att läsa in är denna:
(Ursäkta dåliga indenteringen)
public void run() {
Scanner s=null;
// for(int x=0;x\<serverList.size();x++){
// System.out.println("X = "+x);
// while(alive){
try {
for(int x=0;x\<serverList.size();x++){
//System.out.println("For loop varv "+x);
Server server = (Server)serverList.get(x);
URL url = new URL(server.getServerName());
// URL url = new URL(pilotServer.getServerName());
s = new Scanner(url.openStream());
while ( s.hasNextLine() ){
// System.out.println("Det finns nästa rad");
System.out.println("Aaanvändare; "+s.nextLine());
// processLine( s.nextLine() );
} s.close();
System.out.println("Det finns ingen nästa rad");
} catch (IOException ex) {
System.out.println("Nånting blev fel");
}
}
}
När jag har for loopen som går igenom servrarna en och en så fastnar inläsningen som sagt vid c,a halva filen... inga felmeddelanden eller något meddelande om att texten är slut. När jag däremot tar bort for loopen och bara läser in från 1 server så fungerar det fint. Men så fort for loopen finns där så verkar det låsa sig...
Det är lite olika.
Det är helt enkelt radbrytning vid varje rad.
Jag har dock märkt att det inte var for loopens fel... det slumpade sig helt enkelt så att när jag gladde mig åt att det verkade fungera så var det helt enkelt färre användare online... så jag tog mig igenom hela txtfilen. nu är det samma "fel" igen... det "fastnar" i filen...
den forsta raden innehåller inte någon server info, den är tom, den andra "!GENERAL"
osv, Är du säker på att din lista innehåller ENBART det du behöver?
Den första item i din lista borde se ut så här "212:312988:Ivan Zivotic LOWW:PILOT::44.8156:20.2914:345:0:1/GLF5...osv"
Hej!
Som det är nu(så långt jag har kommit) så gör jag ingenting med den där filen.
Jag lyckas som sagt hämta in textfilen med serveradresserna. det är steg 2 jag har problem med. att läsa in användare från servrarna.
Och de första raderna är meningslösa för mig.
Men jag tänkte förfina och bearbeta informationen när jag lyckas läsa in den. Problemet är som sagt att filen läses in ca halvvägs(det är inte halvvägs utan verkar snarare vara ett visst antal rader som den orkar med) Sedan tar det bara stopp...
Någon gång använde jag csharps WebCLient class för att läsa någon sidas innehåll.
sedan använde jag regular expression (RegEx class) för att få det jag ville läsa från den sidan och spara de i en lista.