Avatar billede eds Nybegynder
26. november 2008 - 20:40 Der er 18 kommentarer

Kalde den mappe som programmet ligger i

Hej jeg har følgende script:

import java.io.File;

public class test {

  public static void main(String[] args) {

    File folder = new File("C:/items");
    File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }
  }


Dette lister alle filerne i en mappe, men er der nogen måde hvorpå man kan få den til at kigge i den mappe hvor programmet ligger, istedet for at man skal definere den fulde sti? Altså findes der en funktion eller et og andet man kan kalde således at den bare bruge den mappe som programmet ligger i?

På forhånd tak.
Avatar billede arne_v Ekspert
26. november 2008 - 20:57 #1
GetPath.class.getProtectionDomain().getCodeSource().getLocation()

eller

GetPath.class.getClassLoader().getResource("dinpakke/DinKlasse.class").getPath()
Avatar billede eds Nybegynder
26. november 2008 - 21:00 #2
Skal jeg importere en bestemt pakke? Den kan nemlig ikke forstå GetPath.
Avatar billede arne_v Ekspert
26. november 2008 - 21:08 #3
Hov - det er navnet på din klasse.

DinKlasse.class.getProtectionDomain().getCodeSource().getLocation()
Avatar billede eds Nybegynder
26. november 2008 - 21:15 #4
ah okay, den udskriver stien rigtigt nu. Men:
File folder = new File(test.class.getProtectionDomain().getCodeSource().getLocation());
virker ikke. Skal det ikke laves om til en streng først? Jeg har forsøgt mig med:
String path = (String) File(test.class.getProt... ;
Men det virker ikke.
Avatar billede arne_v Ekspert
26. november 2008 - 21:35 #5
Prøv med:

File folder = new File(test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
Avatar billede eds Nybegynder
26. november 2008 - 21:41 #6
Så får jeg:
Exception in thread "main" java.lang.NullPointerException
    at test.main(test.java:10)
Avatar billede arne_v Ekspert
26. november 2008 - 21:51 #7
Hvad er der i linie 10 ?
Avatar billede eds Nybegynder
26. november 2008 - 21:59 #8
for (int i = 0; i < listOfFiles.length; i++) {
Avatar billede arne_v Ekspert
26. november 2008 - 22:07 #9
listOfFiles er null
Avatar billede eds Nybegynder
26. november 2008 - 22:16 #10
Men det er den ikke, hvis jeg laver en system out print af test.class.getProtectionDomain().getCodeSource().getLocation().getPath()
får jeg: file:/C:/.../Jbuilder/Workspace/Currency/bin/ hvori der ligger filer.
Avatar billede arne_v Ekspert
26. november 2008 - 22:42 #11
Det må den være med den fejl.

Må vi se hele koden ?
Avatar billede eds Nybegynder
26. november 2008 - 22:48 #12
ja:

import java.io.File;

public class test {

  public static void main(String[] args) {
System.out.println(test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
File folder = new File(test.class.getProtectionDomain().getCodeSource().getLocation().getPath());
    File[] listOfFiles = folder.listFiles();

    for (int i = 0; i < listOfFiles.length; i++) {
      if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
      } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
      }
    }
  }

}
Avatar billede arne_v Ekspert
26. november 2008 - 22:54 #13
Det program kører fint hos mig.

:-)
Avatar billede eds Nybegynder
26. november 2008 - 22:56 #14
Spooky :S
Kan det være fordi jeg kører det i JBuilder?
Avatar billede arne_v Ekspert
26. november 2008 - 23:19 #15
Måske.

Hvilken version af JBuilder og hvilken Java version ?
Avatar billede eds Nybegynder
26. november 2008 - 23:56 #16
JBuilder 1.2.0
Java build 1.6.0_10-rc-b28
Avatar billede arne_v Ekspert
27. november 2008 - 00:05 #17
Hvis du erstatter:

File folder = new File(test.class.getProtectionDomain().getCodeSource().getLocation().getPath());

med:

File folder = new new File(test.class.getClassLoader().getResource("test.class").getPath()).getParentFile();

hvad så ?
Avatar billede eds Nybegynder
27. november 2008 - 00:08 #18
så sker der præcis det samme, exception på linje 10
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