24. juni 2002 - 21:53Der er
14 kommentarer og 1 løsning
checke om fil er tilstede i mappe!
Jeg har lavet et program som først skal starte når der er en fil tilstede i en bestemt mappe. Den måde jeg havde troet mig at det skal virke var at der skulle være en form for loop der hele tiden kikker i mappen og checker der er en fil tilstede og når der så er en fil tilstede skal der springes ude af loopen og selve programmet skal køre!?!
dvs. hvis man starter dit program og filen ikke er tilstede så vil programmet vente på at filen bliver tilgængelig og derefter udføre det som programmet nu skal gøre ?
men hvis du gør som r9 forslår så vil programmet lave busy waiting, dvs. bruge ressourcer som kunne være brugt på noget andet (fil operationer er kostbare). jeg vil foreslå at der tilføjes en: Thread.sleep(500); til while loopet, selvf. med et passende interval afhængig af programmets funktion.
Det se helt godt ud..nu er der bare lige en lille ting...den fil jeg checker på har ikke altid samme navn. dvs. at det jeg skal bruge er vel egentlig noget der checker om der ér noget tilstede i mappen eller om den er tom.
tillader lige at modificere r9's kode: import java.io.*; import java.util.*; import java.util.regex.*;
public class Main { public static void main(String args[]) { boolean findes = false; while (!findes) { File file=new File("c:\\$temp\\"); if(file.isDirectory() && (file.list().length>0)) { findes=true; break; }
if (findes) { System.out.println("udfør din kode her"); } } }
koden kører lige så snart der findes en fil eller et subdir i dit directory. hvis du så vil checkke om det er en bestemt fil kan du gøre sådan: if(file.isDirectory() && (file.list().length>0)) { for(int i=0;i<file.list().length;i++) { if(file.list()[i].equals("denFilSomSkalFindesIDIR.ext")) { findes=true; break; } } }
der findes sikker en bedre måde, men denne virker.
r9 : kan ikke få det til at virke..lige meget om der er noget i mappen C:\\Billeder1\\ eller ej så køre programmet videre?! det er som om den kun checker om selve mappen er tilstede!?? soreno : skal jeg skrive navnet på den mappe jeg skal checke på, der hvor du skrive, ("c:\\$temp\\"); eller.....jeg har prøvet at skrive File file=new File("c:\\$Billeder1\\");...men den er ligeglad med hvad der ligger i mappen , den køre ikke videre!!?? Er det mig der er dum er eller...????
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.