Avatar billede charlie23 Nybegynder
12. februar 2002 - 12:30 Der er 6 kommentarer og
2 løsninger

Javas File-klasse

Er der nogen, der har en kodestump, der kan vise mig, hvordan jeg kan arbejde med File-klassen..?

Jeg vil gerne kunne slette eller flytte filen... Det vil også være fedt, hvis der blev vist, hvordan jeg får fat i navnet på filen, dens størrelse og sidst den blev modificeret...
Avatar billede carstenknudsen Nybegynder
12. februar 2002 - 12:42 #1
Her er en mulighed:
File file = new File( "fileName" );
long lastModified = file.lastModified();
long length = file.length();
file.renameTo( new File( "newFileName" ) );
Avatar billede carstenknudsen Nybegynder
12. februar 2002 - 12:46 #2
Du kan slette filen med
boolean deleted = file.delete();
der returnerer true hvis det gik godt
og filen blev slettet.
Avatar billede charlie23 Nybegynder
12. februar 2002 - 15:02 #3
Det er ikke sådan, at du har nogle kodestumper, hvor jeg kan se, hvordan der er arbejdet med en fil?
Avatar billede carstenknudsen Nybegynder
12. februar 2002 - 15:14 #4
Ovenstående er et sådant eksempel.
Tænker du på at skrive/læse til/fra filer?
Avatar billede disky Nybegynder
12. februar 2002 - 15:25 #5
her er et stort eksempel som flytter indholdet af et directory og alt derunder til et nyt sted:

/*
* dirMove.java
*
* Created on 23. november 2000, 11:13
*/

import java.io.*;
import java.lang.*;
import java.util.*;


/**
*
* @author  reinke
* @version
*/
public class dirMove extends Object
{
    /** The error code
    */
    private int error=0;

    File sourceDir,destDir;
   
    public dirMove()
    {
    }
   
    /** Moves directory from source to dest including everything beneath it
    * @param source The filepath to the source directory
    * @param dest The filepath to the destination
    * @return According to result of the moving of the directory
    */
    public boolean move(String source, String dest)
    {
        //check if either source or dest is empty or null
        if ( (source.trim().length()==0) || (source==null) || (dest.trim().length()==0) || (dest==null) )
        {
            error=1;
            return false;
        }
       
        sourceDir=new File(source);
       
        if(!sourceDir.isDirectory())
        {
            error=2;
            return false;
        }

        destDir=new File(dest);
       
        if(destDir.exists())
        {
            error=3;
            return false;
        }

        if(source.endsWith("/"))
        {
            source=source.substring(0,source.length()-1);
        }

        if(dest.endsWith("/"))
        {
            dest=dest.substring(0,dest.length()-1);
        }
   
        //some error has happened
        if(!moveIt(source,dest))
        {
            deleteDirs(dest);
        }
        return true;
    }

    public void deleteDirs(String dest)
    {
        File dFile=new File(dest);

        File files[]=scanDir(dFile);
       
        if(files.length!=0)
        {
            for(int x=0;x<files.length;x++)
            {
                String name=files[x].getName();
               
                if(files[x].isDirectory())
                {
                    deleteDirs(dest+"/"+name);
                    files[x].delete();
                }
                else
                {
                    files[x].delete();
                }
            }
        }
        else
        {
            dFile.delete();
        }
    }
   
    private boolean moveIt(String source, String dest)
    {
        File sFile=new File(source);
        File dFile=new File(dest);
       
        if(!dFile.mkdirs())
        {
            error=4;
            return false;
        }
     
        File files[]=scanDir(sFile);
       
        if(files.length!=0)
        {
            for(int x=0;x<files.length;x++)
            {
                String name=files[x].getName();
               
                if(files[x].isDirectory())
                {
                    moveIt(source+"/"+name,dest+"/"+name);
                }
                else
                {
                    if(!copyFile(source+"/"+name,dest+"/"+name))
                    {
                        error=5;
                        return false;
                    }
                }
            }
        }
        return true;
    }
   
    /**
    * @param dir
    * @return  */
    private File [] scanDir(File dir)
    {
        return dir.listFiles();
    }
   
    private boolean copyFile(String source, String dest)
    {
        try
        {
//            FileInputStream in=new FileInputStream(new File(source));
//            FileOutputStream out=new FileOutputStream(new File(dest));
            BufferedInputStream in=new BufferedInputStream(new FileInputStream(new File(source)));
            BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(new File(dest)));
           
            int data;
           
            while((data=in.read())!=-1)
            {
                out.write(data);
            }
           
            in.close();
            out.close();
        }
        catch (IOException e)
        {
            return false;
        }
        return true;
    }
   
    /** Returns the error text according to the value of 'error'
    * @return String containing the Error Text according to the value of {@link error}
    */
    public String getError()
    {
        if(error==1) return "source eller dest er tom";
        if(error==2) return "source er ikke en directory";
        if(error==3) return "destination findes allerede!!!";
        if(error==4) return "Could not create Directory";
        if(error==5) return "File copy failed";
        return "";
    }
}
Avatar billede carstenknudsen Nybegynder
12. februar 2002 - 15:33 #6
Det er (måske lidt ulogisk) ikke File klassen der
har noget med fil operationer som læs/skriv at
gøre. I diskys eksempel kan du se hvordan du
kopierer indholdet af filer. File klassen repræsenterer
udelukkende et håndtag i filen med du kan hverken
skrive eller læse med den.
Avatar billede charlie23 Nybegynder
12. februar 2002 - 16:10 #7
Tak skal du have, disky! Men også tak til dig Carsten! Jeg mener, at disky får de 30 af pointene, da jeg jo efterspurgte kode og i den grad fik det! Tak skal I have!
Avatar billede disky Nybegynder
12. februar 2002 - 16:21 #8
selv tak :)
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