Avatar billede babynamnam Nybegynder
24. juni 2002 - 21:53 Der 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!?! 
Avatar billede soreno Praktikant
24. juni 2002 - 22:02 #1
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 ?
Avatar billede babynamnam Nybegynder
24. juni 2002 - 22:13 #2
jeps....det er lige det den skal!
Avatar billede r9 Nybegynder
24. juni 2002 - 22:14 #3
Der brydes først ud af løkken,når filen findes


import java.io.File;

public class minFil {



    public static void main(String[] args) {

        boolean findes = false;

        while (!findes)
        {
          File file=new File("c:\\minFil.txt");
          if(file.exists())
          {
            findes=true;
            break;
          }

        }


    }
}
Avatar billede r9 Nybegynder
24. juni 2002 - 22:19 #4
lidt tilrettet:


import java.io.File;

public class minFil {




    public static void main(String[] args) {
        boolean findes = false;



        while (!findes)    {

          File file=new File("c:\\minFil.txt");

                if(file.exists()){
                    findes=true;
                    break;
                }

        }


        if (findes) {

            System.out.println("udfør din kode her");
        }





    }


}
Avatar billede soreno Praktikant
24. juni 2002 - 22:20 #5
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.
Avatar billede r9 Nybegynder
24. juni 2002 - 22:23 #6
sådan:


import java.io.File;

public class minFil {




    public static void main(String[] args) {
        boolean findes = false;



        while (!findes)    {

          File file=new File("c:\\dinmappe\\minFil.txt");

                if(file.exists()){
                    findes=true;
                    break;
                }

            try
                {
                    Thread.sleep(1000); //vent 1 sek
            }
            catch(InterruptedException e)
            {
            }


        }


        if (findes) {

            System.out.println("udfør din kode her");
        }





    }


}
Avatar billede babynamnam Nybegynder
24. juni 2002 - 22:27 #7
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.
Avatar billede r9 Nybegynder
24. juni 2002 - 22:39 #8
import java.io.File;

public class minFil {




    public static void main(String[] args) {
        boolean findes = false;



        while (!findes)    {

          File file=new File("c:\\dinmappe\\");
            String [] l = new String [100];
            l = file.list();

                if(l.length != 0){

                    findes=true;
                    break;
                }

            try
                {
                    Thread.sleep(1000); //vent 1 sek
            }
            catch(InterruptedException e)
            {
            }


        }


        if (findes) {


            System.out.println("udfør din kode her");
        }





    }


}





så snart der kommer et eller andet ind i mappen, så hoppes der ud af løkken
Avatar billede soreno Praktikant
24. juni 2002 - 22:43 #9
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;
            }

            try
            {
                Thread.sleep(1000); //vent 1 sek
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

        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.
Avatar billede r9 Nybegynder
24. juni 2002 - 22:48 #10
:-)

jeg så lige at den kan kaste en SecurityException 


  File file=new File("c:\\dinmappe\\");
            String [] l = new String [100];

            try {
                l = file.list();
            }
                catch(SecurityException  e){
e.printStackTrace();

                }
Avatar billede babynamnam Nybegynder
24. juni 2002 - 23:02 #11
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...????
Avatar billede r9 Nybegynder
24. juni 2002 - 23:07 #12
det lyder underligt.

Dette virker fint hos mig.
Løkken kører bare derudaf, og når jeg kopier en fil derind, så stopper den.

Du har husket \\ (2 stk.) ?


import java.io.File;

public class minFil {

    public static void main(String[] args) {
        boolean findes = false;


        while (!findes)    {

          File file=new File("c:\\dinmappe\\");
            String [] l = new String [100];

            try {
                l = file.list();
            }
                catch(SecurityException  e){
                }


            if(l.length != 0){

                    findes=true;
                    break;
                }

            try
                {
                    Thread.sleep(1000); //vent 1 sek
            }
            catch(InterruptedException e)
            {
            }


        }


        if (findes) {


            System.out.println("udfør din kode her");
        }

    }


}
Avatar billede babynamnam Nybegynder
24. juni 2002 - 23:12 #13
hey r9 ...hvis jeg retter, if(l.length != 0) , til if(l.length != 1) så virker det!!!
Avatar billede babynamnam Nybegynder
24. juni 2002 - 23:34 #14
så r9 du får hermed de 100 point da det nu var din kode jeg har brugt!?
Avatar billede r9 Nybegynder
24. juni 2002 - 23:38 #15
har du prøvet med:

if(l.length > 0) ?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester