mboost-dp1
Java spørgsmål fra en newbie
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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.
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.
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.
#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.:
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:
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"));
}
});
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:
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:
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 ;)
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 ;)
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!
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.