mboost-dp1

Java spørgsmål fra en newbie


Gå til bund
Gravatar #1 - fjols
16. jun. 2011 12:02
Jeg har noget kode der læser fra 3 log filer, som jeg skal have modificeret til at kunne læse disse logfiler fra forskellige mapper.

    	String path = "\\\\" + server + "\\path\\LOG";
String path1 = "\\\\" + server + "\\path\\Another\\LOG";


File dir = new File(path);
File dir1 = new File(path1);
File[] files = dir.listFiles( new FileFilter() {

public boolean accept(File pathname) {

return (pathname.getName().endsWith(".log") || pathname.getName().endsWith(".txt"));
}

});


Jeg har aldrig kodet java før, så først vil spørge, temmelig dumt, hvordan bliver dir og dir1 variablerne brugt?
De er ikke andre steder i koden, så går ud fra det er noget af det jeg har pastet her de bliver brugt i.

Dernæst, hvorfor bliver mit output kun den log fil der ligger i path1?

Sig til hvis jeg ikke har pastet nok kode.
Gravatar #2 - Mnc
16. jun. 2011 12:15
Du kan eventuelt smide hele koden på pastebin eller lignende, og så linke til det.
Gravatar #3 - Darwind
16. jun. 2011 12:29
#1 - dir og dir1 bliver brugt, når du kalder din accept metode.

De bliver ikke direkte kaldt af accept metoden, men accept metoden tager imod en "File" og din dir og dir1 er begge File objekter.

Det kode du har der, bruger dir1 File objektet og dir1 tager imod path1 - derfor får du kun indhold fra path1.

Du vil nødvendigvis lave det samme nummer med dir og path.

Dvs.:

File[] files1 = dir.listFiles( new FileFilter() {
public boolean accept(File pathname) {
return (pathname.getName().endsWith(".log") || pathname.getName().endsWith(".txt"));
}
});


EDIT: Det gik lidt hurtigt - har ikke arbejdet så meget med FileFilter i Java.

Hold ved dine anonyme klasser, altså ved kaldet til dir1 og path1 skal det se ens ud:

File[] files1 = dir1.listFiles( new FileFilter() {
public boolean accept(File pathname) {
return (pathname.getName().endsWith(".log") || pathname.getName().endsWith(".txt"));
}
});
Gravatar #4 - fjols
16. jun. 2011 12:40
Okay, tak for forklaringen.

Så har jeg et par videre spørgsmål:
- Bruger den dir1 objektet fordi det er det sidste file objekt før accept?
- Hvordan hjælper det kode du skriver på mit problem?
Skal jeg have 2 af de accept?
Gravatar #5 - Darwind
16. jun. 2011 12:59
Ja det blev lidt rodet, det jeg fik skrevet - er på arbejde, så forsøger at multitaske :P

Mener du, at du kun får indholdet af path1, hver gang du kalder:

File[] files = dir.listFiles( new FileFilter() {
public boolean accept(File pathname) {
return (pathname.getName().endsWith(".log") || pathname.getName().endsWith(".txt"));
}
});


Det burde ikke kunne lade sig gøre, da din fil "dir" tager imod "path" og ikke "path1".

Og ja du kan enten fortsætte med den anonyme klasse og bare skrive:

File[] files = dir1.listFiles( new FileFilter() {
public boolean accept(File pathname) {
return (pathname.getName().endsWith(".log") || pathname.getName().endsWith(".txt"));
}
});


Alternativt kan du lave en generel udgave på denne måde: http://pastebin.com/D5sz5tUG

Den generelle måde er bedre, da kode genbrug er bedre end at duplikere koden gang på gang efter min mening ;)

Håber det var mere forståeligt denne gang ;)
Gravatar #6 - fjols
16. jun. 2011 13:16
Darwind (5) skrev:

Mener du, at du kun får indholdet af path1, hver gang du kalder:

... cut cut...

Det burde ikke kunne lade sig gøre, da din fil "dir" tager imod "path" og ikke "path1".


Ja, det er hvad jeg mener og hvad der undrer mig, men du har givet mig en lidt bedre forståelse for koden, så jeg vil prøve at rode lidt mere med det. Jeg har sikkert overset et eller andet vigtigt ;)

Mange tak for hjælpen. Jeg kommer sikkert tilbage med mere!
Gravatar #7 - Darwind
16. jun. 2011 13:18
Det var så lidt ;)

Ellers smid hele koden i pastebin, så er det lidt lettere at fejlfinde ;)
Gravatar #8 - fjols
16. jun. 2011 13:21
Ja, men pointen var også at jeg gerne vil lære noget af det, så det giver mere mening at spørge om de ting jeg er i tvivl om.

Hvis jeg går helt i stå så ryger det på pastebin.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login