2016-04-10 6 views
1

Mit Verarbeitung 3-0-1 (noch nicht aktualisiert) habe ich ein Problem mit der Funktion dataPath().Wie erhält man den Pfad der Skizze in der Verarbeitung? (Datenpfad funktioniert nicht)

Mein Code:

final String path = dataPath(""); 
//... 
void setup(){ 
    //... 
    println(path); 
    //... 
} 

Zeigt in der Konsole:

/media/ubuntu/Expansionskurs/Programmation/Java/Verarbeitung/Ubuntu/Verarbeitung-3.0.1/null/

Daten

aber es sollte angezeigt werden (gemäß der Dokumentation und meine Versuche in anderen Projekten):

/media/ubuntu/Expansionskurs/Programmation/Java/Verarbeitung/Projets/Time_Fighter/data

So scheint es, sie die Verarbeitung statt einem Weg zu meinem Projekt einen Pfades ist die Rückkehr? Und warum gibt es eine Null?

Die Frage ist, wissen Sie, einen Weg, der den Pfad meiner Skizze haben, funktionieren würde?

PS. Ein Freund von mir vorgeschlagen, anstatt die File-Klasse zu verwenden, hatte ich dieses Ergebnis:

File file = new File("data"); 
//... 
void setup(){ 
    //... 
    file.getAbsolutePath(); 
    //... 
} 

Welche zurückgegeben:

/media/ubuntu/Expansionskurs/Programmation/Java/Verarbeitung/Ubuntu /processing-3.0.1/data

PPS. Ich benutze Ubuntu (Mate) ...

Antwort

0

Sie sollten die dataPath() Funktion nicht verwenden. Sie sollten die sketchPath() Funktion verwenden.

Von the Processing source for dataPath():

/** 
    * <b>This function almost certainly does not do the thing you want it to.</b> 
    * The data path is handled differently on each platform, and should not be 
    * considered a location to write files. It should also not be assumed that 
    * this location can be read from or listed. This function is used internally 
    * as a possible location for reading files. It's still "public" as a 
    * holdover from earlier code. 
    * <p> 
    * Libraries should use createInput() to get an InputStream or createOutput() 
    * to get an OutputStream. sketchPath() can be used to get a location 
    * relative to the sketch. Again, <b>do not</b> use this to get relative 
    * locations of files. You'll be disappointed when your app runs on different 
    * platforms. 
    */ 
    public String dataPath(String where) { 
    return dataFile(where).getAbsolutePath(); 
    } 

Und hier ist sketchPath():

/** 
    * Prepend the sketch folder path to the filename (or path) that is 
    * passed in. External libraries should use this function to save to 
    * the sketch folder. 
    * <p/> 
    * Note that when running as an applet inside a web browser, 
    * the sketchPath will be set to null, because security restrictions 
    * prevent applets from accessing that information. 
    * <p/> 
    * This will also cause an error if the sketch is not inited properly, 
    * meaning that init() was never called on the PApplet when hosted 
    * my some other main() or by other code. For proper use of init(), 
    * see the examples in the main description text for PApplet. 
    */ 
    public String sketchPath(String where) { 
    if (sketchPath() == null) { 
     return where; 
    } 
    // isAbsolute() could throw an access exception, but so will writing 
    // to the local disk using the sketch path, so this is safe here. 
    // for 0120, added a try/catch anyways. 
    try { 
     if (new File(where).isAbsolute()) return where; 
    } catch (Exception e) { } 

    return sketchPath() + File.separator + where; 
    }