Avatar billede Bennysørensen Praktikant
10. november 2003 - 15:54 Der er 7 kommentarer og
1 løsning

Java fra kommandpromt part 2

Jeg har en opgave:

"Lav et program FileInfo.java, der tager stien til en mappe som opstartsparameter (så man f.eks kan køre programmet med java C:/oop/fileinfo). Herefter skal du lave følgende:
- tæl og udskriv hvor mange filer der er i den angivne mappe (undermapper skal ikke tælles med) - programmet kan f.eks udskrive "C:/oop/opgaver indeholder 9 filer"

- undersøg hvad hver enkelt af filerne i mappen fylder (size) og udskriv som aflsutning hvad alle filerne i mappen fylder (brug metoden file.length()). Kan nu udskrive f.eks: (tekst slettet) "

- udvid programmet, så det tager en (frivillig) parameter kaldet '-type' som begrænser hvilke filer, der skal tages med , idet man kan angive hvilken endelse de skal have, f.eks 'java FileSizes C:/oop/opgaver -type .class"

Well, jeg har denne klasse:
import java.util.*;
import java.io.*;

public class FileInfo
{
    static String filNavn;
   
    public FileInfo(String fileName)
    {
        this.filNavn = fileName;
    }
    public static void main (String args[])
    { 
        long totalstr = 0, totalfilt = 0;
        FileInfo omvej = new FileInfo("E:/java/sampledir/sampledir/legeplads/IO/");
        File fil = new File(filNavn);
        File [] list = fil.listFiles();
        System.out.println("Der er " + list.length + " filer i " + fil);
        for (int i = 0; i < list.length; i++)
        {
            totalstr = totalstr + list[i].length();
        }
        System.out.println("...og de fylder " + totalstr + " bytes.");
       
        File [] filtreret = fil.listFiles( new FilenameFilter( )
        {
            public boolean accept(File dir, String name)
            {
        return name.endsWith( ".class" );
            }
    });
        for( int n = 0; n < filtreret.length; n++ )
        {
            totalfilt = totalfilt + filtreret[n].length();
        }
        System.out.println("Der er " + filtreret.length + " filer med .class, og de fylder ialt " + totalfilt + " bytes.");
    }
}

...og den laver sådan set noget af arbejdet. Problemerne er dette :

a) jeg kan ikke finde ud af at starte den fra en kommandoprompt - ligegyldigt hvor meget jeg skriver cd C:. feks, ender jeg altid i E:/Ducuments and settings/schroeder eller tilsvarende, og jeg skal over i E:/Java/sampledir etc.

b: Jeg er ret megt i tvivl om hvilke ændringer der skal foretages for at kalde mit program med et argument. I en tidligere udgave af dette spørgsmål lærte jeg at 'args' i public static void main (String args[]) er ét argument, der kan tages i main-metoden...men hvad hvis der skal tages to, og hvilke ændringer skal jeg så lave?

Et langt og rodet spørgsmål fra en forvirret studerende...

"
Avatar billede arne_v Ekspert
10. november 2003 - 16:01 #1
re a)

E:

CD \Java\sampledir
Avatar billede arne_v Ekspert
10. november 2003 - 16:02 #2
re b)

Ingen.

args[0] = første argument
args[1] = andet argument
Avatar billede arne_v Ekspert
10. november 2003 - 16:03 #3
Og det må være et svar
Avatar billede Bennysørensen Praktikant
10. november 2003 - 16:35 #4
Hm...jeg kan køre programmet fra Forte uden fejl, men får en ClassDefNotFound Exception, hvis jeg kører programmet som <sti til eksakt mappe> java FileInfo.java.

Hvordan er det med javac FileInfo.java -> burde det ikke være "kompilér"?
Avatar billede arne_v Ekspert
10. november 2003 - 16:37 #5
Når du kører (java) skal du ikke have classpath til det dir hvor
FileInfo.java ligger men til det directory hvor FileInfo.class ligger
(det er muligvis samme directory - jeg kan ikek lige huske hvordan Forte
gør det).
Avatar billede arne_v Ekspert
10. november 2003 - 16:38 #6
Hvis PATH indeholder dir med javac.exe så bør:

javac FileInfo.java

eller måske:

javac -classpath ... FileInfo.java

virke !
Avatar billede Bennysørensen Praktikant
10. november 2003 - 17:24 #7
Hm, jeg får en "javac is not recognised as an internal or external command" (recognised ER altså ikke med 'z'...)...dét undrer mig!

Jeg står i samme directory som FileInfo.class ligger i.
Avatar billede arne_v Ekspert
10. november 2003 - 17:50 #8
Så find ud af hvor javac.exe ligger og prøve med:

\et\eller\andet\dir\bin\javac FileInfo.java
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