2016-09-01 1 views
0

Mein Problem ist, dass getAbsolutePath bestimmte Ordner um die Datei ignoriert, die ich versuche zu finden. Ich versuche den Dateipfad einer Datei nur unter Verwendung ihres Namens zu erhalten. Hier ist der Code Ich verwende:getAbsolutePath ignoriert bestimmte Ordner

import java.awt.Desktop; 
import java.io.File; 
import java.io.IOException; 

public class OpenFile { 
    public static void main(String[] args) throws IOException{ 
     File file = new File("Point.java"); 
     String path = file.getCanonicalPath(); 

     try { 
      Desktop.getDesktop().open(new File(path)); 
     } catch(IOException e) { 
      System.out.println("not work"); 
     } 
    } 
} 

ich diesen Fehler:

Exception in thread "main" java.lang.IllegalArgumentException: The file: /Users/default/Desktop/Eclipse/TreeThing/Point.java doesn't exist. 
at java.awt.Desktop.checkFileValidation(Desktop.java:210) 
at java.awt.Desktop.open(Desktop.java:270) 
at ForkBomb.main(ForkBomb.java:11) 

Die wirkliche Filepath ist /Users/default/Desktop/Eclipse/TreeThing/src/Point.java, sondern weil das Verzeichnis src wird ignoriert das Programm wird nicht ausgeführt. Wie kann ich es lösen?

+2

Es geöffnet wird relativ zum aktuellen Arbeitsverzeichnis, die offenbar ist 'TreeThing', nicht' TreeThing/src'. –

+0

Ich verfolgte den Dateipfad selbst und es befindet sich in einem Ordner namens src, der sich in TreeThing befindet. –

+2

Vielleicht sollten Sie das Javadoc von ['getCanonicalPath()'] (https://docs.oracle.com/javase/8/docs/api/java/io/File.html#getCanonicalPath--) erneut (oder für das erste Mal?) also schau was es * eigentlich * macht. Tipp: Es ist * nicht * eine Datei * Suche * -Methode. – Andreas

Antwort

1

Es scheint, dass Sie Ihren Code im Verzeichnis/Users/default/Desktop/Eclipse/TreeThing ausführen. Dadurch wird das aktuelle Arbeitsverzeichnis für Ihre Anwendung festgelegt.

Wenn Sie also ein File Objekt ohne Pfad instanziieren, nimmt der Code an, dass es sich im aktuellen Arbeitsverzeichnis befindet.

Es tut nicht führen Sie eine Suche für Sie durch.

Wenn Sie an das bestehende Point.java beziehen möchten, verwenden Sie entweder:

File file = new File("src/Point.java"); 

... oder:

File file = new File("/Users/default/Desktop/Eclipse/TreeThing/src/Point.java"); 
Verwandte Themen